<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><span id="line-2"></span><span class="hs-pragma">{-# LANGUAGE Strict #-}</span><span> </span><span class="hs-comment">-- See Note [Avoiding space leaks in toIface*]</span><span>
</span><span id="line-3"></span><span>
</span><span id="line-4"></span><span class="hs-comment">-- | Functions for converting Core things to interface file things.</span><span>
</span><span id="line-5"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.CoreToIface</span><span>
</span><span id="line-6"></span><span>    </span><span class="hs-special">(</span><span> </span><span class="annot"><span class="hs-comment">-- * Binders</span></span><span>
</span><span id="line-7"></span><span>      </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTvBndr"><span class="hs-identifier">toIfaceTvBndr</span></a></span><span>
</span><span id="line-8"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTvBndrs"><span class="hs-identifier">toIfaceTvBndrs</span></a></span><span>
</span><span id="line-9"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceIdBndr"><span class="hs-identifier">toIfaceIdBndr</span></a></span><span>
</span><span id="line-10"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceBndr"><span class="hs-identifier">toIfaceBndr</span></a></span><span>
</span><span id="line-11"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceForAllBndr"><span class="hs-identifier">toIfaceForAllBndr</span></a></span><span>
</span><span id="line-12"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTyCoVarBinders"><span class="hs-identifier">toIfaceTyCoVarBinders</span></a></span><span>
</span><span id="line-13"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTyVar"><span class="hs-identifier">toIfaceTyVar</span></a></span><span>
</span><span id="line-14"></span><span>      </span><span class="annot"><span class="hs-comment">-- * Types</span></span><span>
</span><span id="line-15"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceType"><span class="hs-identifier">toIfaceType</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier">toIfaceTypeX</span></a></span><span>
</span><span id="line-16"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceKind"><span class="hs-identifier">toIfaceKind</span></a></span><span>
</span><span id="line-17"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTcArgs"><span class="hs-identifier">toIfaceTcArgs</span></a></span><span>
</span><span id="line-18"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTyCon"><span class="hs-identifier">toIfaceTyCon</span></a></span><span>
</span><span id="line-19"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTyCon_name"><span class="hs-identifier">toIfaceTyCon_name</span></a></span><span>
</span><span id="line-20"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTyLit"><span class="hs-identifier">toIfaceTyLit</span></a></span><span>
</span><span id="line-21"></span><span>      </span><span class="annot"><span class="hs-comment">-- * Tidying types</span></span><span>
</span><span id="line-22"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#tidyToIfaceType"><span class="hs-identifier">tidyToIfaceType</span></a></span><span>
</span><span id="line-23"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#tidyToIfaceContext"><span class="hs-identifier">tidyToIfaceContext</span></a></span><span>
</span><span id="line-24"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#tidyToIfaceTcArgs"><span class="hs-identifier">tidyToIfaceTcArgs</span></a></span><span>
</span><span id="line-25"></span><span>      </span><span class="annot"><span class="hs-comment">-- * Coercions</span></span><span>
</span><span id="line-26"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceCoercion"><span class="hs-identifier">toIfaceCoercion</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceCoercionX"><span class="hs-identifier">toIfaceCoercionX</span></a></span><span>
</span><span id="line-27"></span><span>      </span><span class="annot"><span class="hs-comment">-- * Pattern synonyms</span></span><span>
</span><span id="line-28"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#patSynToIfaceDecl"><span class="hs-identifier">patSynToIfaceDecl</span></a></span><span>
</span><span id="line-29"></span><span>      </span><span class="annot"><span class="hs-comment">-- * Expressions</span></span><span>
</span><span id="line-30"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier">toIfaceExpr</span></a></span><span>
</span><span id="line-31"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceBang"><span class="hs-identifier">toIfaceBang</span></a></span><span>
</span><span id="line-32"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceSrcBang"><span class="hs-identifier">toIfaceSrcBang</span></a></span><span>
</span><span id="line-33"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceLetBndr"><span class="hs-identifier">toIfaceLetBndr</span></a></span><span>
</span><span id="line-34"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceIdDetails"><span class="hs-identifier">toIfaceIdDetails</span></a></span><span>
</span><span id="line-35"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceIdInfo"><span class="hs-identifier">toIfaceIdInfo</span></a></span><span>
</span><span id="line-36"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfUnfolding"><span class="hs-identifier">toIfUnfolding</span></a></span><span>
</span><span id="line-37"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTickish"><span class="hs-identifier">toIfaceTickish</span></a></span><span>
</span><span id="line-38"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceBind"><span class="hs-identifier">toIfaceBind</span></a></span><span>
</span><span id="line-39"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceAlt"><span class="hs-identifier">toIfaceAlt</span></a></span><span>
</span><span id="line-40"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceCon"><span class="hs-identifier">toIfaceCon</span></a></span><span>
</span><span id="line-41"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceApp"><span class="hs-identifier">toIfaceApp</span></a></span><span>
</span><span id="line-42"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceVar"><span class="hs-identifier">toIfaceVar</span></a></span><span>
</span><span id="line-43"></span><span>      </span><span class="annot"><span class="hs-comment">-- * Other stuff</span></span><span>
</span><span id="line-44"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceLFInfo"><span class="hs-identifier">toIfaceLFInfo</span></a></span><span>
</span><span id="line-45"></span><span>    </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span class="hs-cpp">

#include &quot;HsVersions.h&quot;
</span><span>
</span><span id="line-49"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-50"></span><span>
</span><span id="line-51"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html"><span class="hs-identifier">GHC.Iface.Syntax</span></a></span><span>
</span><span id="line-52"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html"><span class="hs-identifier">GHC.Core.DataCon</span></a></span><span>
</span><span id="line-53"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Id.html"><span class="hs-identifier">GHC.Types.Id</span></a></span><span>
</span><span id="line-54"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html"><span class="hs-identifier">GHC.Types.Id.Info</span></a></span><span>
</span><span id="line-55"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.StgToCmm.Types.html"><span class="hs-identifier">GHC.StgToCmm.Types</span></a></span><span>
</span><span id="line-56"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.html"><span class="hs-identifier">GHC.Core</span></a></span><span>
</span><span id="line-57"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html"><span class="hs-identifier">GHC.Core.TyCon</span></a></span><span> </span><span class="hs-keyword">hiding</span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#pprPromotionQuote"><span class="hs-identifier">pprPromotionQuote</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-58"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Coercion.Axiom.html"><span class="hs-identifier">GHC.Core.Coercion.Axiom</span></a></span><span>
</span><span id="line-59"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html"><span class="hs-identifier">GHC.Builtin.Types.Prim</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#eqPrimTyCon"><span class="hs-identifier">eqPrimTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.Prim.html#eqReprPrimTyCon"><span class="hs-identifier">eqReprPrimTyCon</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-60"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html"><span class="hs-identifier">GHC.Builtin.Types</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Builtin.Types.html#heqTyCon"><span class="hs-identifier">heqTyCon</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-61"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Id.Make.html"><span class="hs-identifier">GHC.Types.Id.Make</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Types.Id.Make.html#noinlineIdName"><span class="hs-identifier">noinlineIdName</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-62"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Builtin.Names.html"><span class="hs-identifier">GHC.Builtin.Names</span></a></span><span>
</span><span id="line-63"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Name.html"><span class="hs-identifier">GHC.Types.Name</span></a></span><span>
</span><span id="line-64"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html"><span class="hs-identifier">GHC.Types.Basic</span></a></span><span>
</span><span id="line-65"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Type.html"><span class="hs-identifier">GHC.Core.Type</span></a></span><span>
</span><span id="line-66"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Multiplicity.html"><span class="hs-identifier">GHC.Core.Multiplicity</span></a></span><span>
</span><span id="line-67"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.PatSyn.html"><span class="hs-identifier">GHC.Core.PatSyn</span></a></span><span>
</span><span id="line-68"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html"><span class="hs-identifier">GHC.Utils.Outputable</span></a></span><span>
</span><span id="line-69"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html"><span class="hs-identifier">GHC.Data.FastString</span></a></span><span>
</span><span id="line-70"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Misc.html"><span class="hs-identifier">GHC.Utils.Misc</span></a></span><span>
</span><span id="line-71"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Var.html"><span class="hs-identifier">GHC.Types.Var</span></a></span><span>
</span><span id="line-72"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Var.Env.html"><span class="hs-identifier">GHC.Types.Var.Env</span></a></span><span>
</span><span id="line-73"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html"><span class="hs-identifier">GHC.Types.Var.Set</span></a></span><span>
</span><span id="line-74"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html"><span class="hs-identifier">GHC.Core.TyCo.Rep</span></a></span><span>
</span><span id="line-75"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Tidy.html"><span class="hs-identifier">GHC.Core.TyCo.Tidy</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Tidy.html#tidyCo"><span class="hs-identifier">tidyCo</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-76"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Demand.html"><span class="hs-identifier">GHC.Types.Demand</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Types.Demand.html#isTopSig"><span class="hs-identifier">isTopSig</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-77"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Cpr.html"><span class="hs-identifier">GHC.Types.Cpr</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Types.Cpr.html#topCprSig"><span class="hs-identifier">topCprSig</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-78"></span><span>
</span><span id="line-79"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Maybe.html#"><span class="hs-identifier">Data.Maybe</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="../../base/src/Data.Maybe.html#catMaybes"><span class="hs-identifier">catMaybes</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-80"></span><span>
</span><span id="line-81"></span><span class="hs-comment">{- Note [Avoiding space leaks in toIface*]
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Building a interface file depends on the output of the simplifier.
If we build these lazily this would mean keeping the Core AST alive
much longer than necessary causing a space &quot;leak&quot;.

This happens for example when we only write the interface file to disk
after code gen has run, in which case we might carry megabytes of core
AST in the heap which is no longer needed.

We avoid this in two ways.
* First we use -XStrict in GHC.CoreToIface which avoids many thunks
  to begin with.
* Second we define NFData instance for Iface syntax and use them to
  force any remaining thunks.

-XStrict is not sufficient as patterns of the form `f (g x)` would still
result in a thunk being allocated for `g x`.

NFData is sufficient for the space leak, but using -XStrict reduces allocation
by ~0.1% when compiling with -O. (nofib/spectral/simple, T10370).
It's essentially free performance hence we use -XStrict on top of NFData.

MR !1633 on gitlab, has more discussion on the topic.
-}</span><span>
</span><span id="line-107"></span><span>
</span><span id="line-108"></span><span class="hs-comment">----------------</span><span>
</span><span id="line-109"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTvBndr"><span class="hs-identifier hs-type">toIfaceTvBndr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceTvBndr"><span class="hs-identifier hs-type">IfaceTvBndr</span></a></span><span>
</span><span id="line-110"></span><span id="toIfaceTvBndr"><span class="annot"><span class="annottext">toIfaceTvBndr :: CoVar -&gt; IfaceTvBndr
</span><a href="GHC.CoreToIface.html#toIfaceTvBndr"><span class="hs-identifier hs-var hs-var">toIfaceTvBndr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; CoVar -&gt; IfaceTvBndr
</span><a href="GHC.CoreToIface.html#toIfaceTvBndrX"><span class="hs-identifier hs-var">toIfaceTvBndrX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="GHC.Types.Var.Set.html#emptyVarSet"><span class="hs-identifier hs-var">emptyVarSet</span></a></span><span>
</span><span id="line-111"></span><span>
</span><span id="line-112"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTvBndrX"><span class="hs-identifier hs-type">toIfaceTvBndrX</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceTvBndr"><span class="hs-identifier hs-type">IfaceTvBndr</span></a></span><span>
</span><span id="line-113"></span><span id="toIfaceTvBndrX"><span class="annot"><span class="annottext">toIfaceTvBndrX :: VarSet -&gt; CoVar -&gt; IfaceTvBndr
</span><a href="GHC.CoreToIface.html#toIfaceTvBndrX"><span class="hs-identifier hs-var hs-var">toIfaceTvBndrX</span></a></span></span><span> </span><span id="local-6989586621680842900"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842900"><span class="hs-identifier hs-var">fr</span></a></span></span><span> </span><span id="local-6989586621680842899"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842899"><span class="hs-identifier hs-var">tyvar</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><span class="annottext">OccName -&gt; FastString
</span><a href="GHC.Types.Name.Occurrence.html#occNameFS"><span class="hs-identifier hs-var hs-var">occNameFS</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; OccName
forall a. NamedThing a =&gt; a -&gt; OccName
</span><a href="GHC.Types.Name.html#getOccName"><span class="hs-identifier hs-var">getOccName</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842899"><span class="hs-identifier hs-var">tyvar</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-114"></span><span>                          </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842900"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; Type
</span><a href="GHC.Types.Var.html#tyVarKind"><span class="hs-identifier hs-var">tyVarKind</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842899"><span class="hs-identifier hs-var">tyvar</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-115"></span><span>                          </span><span class="hs-special">)</span><span>
</span><span id="line-116"></span><span>
</span><span id="line-117"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTvBndrs"><span class="hs-identifier hs-type">toIfaceTvBndrs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Iface.Type.html#IfaceTvBndr"><span class="hs-identifier hs-type">IfaceTvBndr</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-118"></span><span id="toIfaceTvBndrs"><span class="annot"><span class="annottext">toIfaceTvBndrs :: [CoVar] -&gt; [IfaceTvBndr]
</span><a href="GHC.CoreToIface.html#toIfaceTvBndrs"><span class="hs-identifier hs-var hs-var">toIfaceTvBndrs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CoVar -&gt; IfaceTvBndr) -&gt; [CoVar] -&gt; [IfaceTvBndr]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; IfaceTvBndr
</span><a href="GHC.CoreToIface.html#toIfaceTvBndr"><span class="hs-identifier hs-var">toIfaceTvBndr</span></a></span><span>
</span><span id="line-119"></span><span>
</span><span id="line-120"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceIdBndr"><span class="hs-identifier hs-type">toIfaceIdBndr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceIdBndr"><span class="hs-identifier hs-type">IfaceIdBndr</span></a></span><span>
</span><span id="line-121"></span><span id="toIfaceIdBndr"><span class="annot"><span class="annottext">toIfaceIdBndr :: CoVar -&gt; IfaceIdBndr
</span><a href="GHC.CoreToIface.html#toIfaceIdBndr"><span class="hs-identifier hs-var hs-var">toIfaceIdBndr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; CoVar -&gt; IfaceIdBndr
</span><a href="GHC.CoreToIface.html#toIfaceIdBndrX"><span class="hs-identifier hs-var">toIfaceIdBndrX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="GHC.Types.Var.Set.html#emptyVarSet"><span class="hs-identifier hs-var">emptyVarSet</span></a></span><span>
</span><span id="line-122"></span><span>
</span><span id="line-123"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceIdBndrX"><span class="hs-identifier hs-type">toIfaceIdBndrX</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#CoVar"><span class="hs-identifier hs-type">CoVar</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceIdBndr"><span class="hs-identifier hs-type">IfaceIdBndr</span></a></span><span>
</span><span id="line-124"></span><span id="toIfaceIdBndrX"><span class="annot"><span class="annottext">toIfaceIdBndrX :: VarSet -&gt; CoVar -&gt; IfaceIdBndr
</span><a href="GHC.CoreToIface.html#toIfaceIdBndrX"><span class="hs-identifier hs-var hs-var">toIfaceIdBndrX</span></a></span></span><span> </span><span id="local-6989586621680842893"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842893"><span class="hs-identifier hs-var">fr</span></a></span></span><span> </span><span id="local-6989586621680842892"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842892"><span class="hs-identifier hs-var">covar</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><span class="annottext">Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceType"><span class="hs-identifier hs-var">toIfaceType</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; Type
</span><a href="GHC.Types.Id.html#idMult"><span class="hs-identifier hs-var">idMult</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842892"><span class="hs-identifier hs-var">covar</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-125"></span><span>                          </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">OccName -&gt; FastString
</span><a href="GHC.Types.Name.Occurrence.html#occNameFS"><span class="hs-identifier hs-var hs-var">occNameFS</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; OccName
forall a. NamedThing a =&gt; a -&gt; OccName
</span><a href="GHC.Types.Name.html#getOccName"><span class="hs-identifier hs-var">getOccName</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842892"><span class="hs-identifier hs-var">covar</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-126"></span><span>                          </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842893"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; Type
</span><a href="GHC.Types.Var.html#varType"><span class="hs-identifier hs-var hs-var">varType</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842892"><span class="hs-identifier hs-var">covar</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-127"></span><span>                          </span><span class="hs-special">)</span><span>
</span><span id="line-128"></span><span>
</span><span id="line-129"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceBndr"><span class="hs-identifier hs-type">toIfaceBndr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceBndr"><span class="hs-identifier hs-type">IfaceBndr</span></a></span><span>
</span><span id="line-130"></span><span id="toIfaceBndr"><span class="annot"><span class="annottext">toIfaceBndr :: CoVar -&gt; IfaceBndr
</span><a href="GHC.CoreToIface.html#toIfaceBndr"><span class="hs-identifier hs-var hs-var">toIfaceBndr</span></a></span></span><span> </span><span id="local-6989586621680842888"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842888"><span class="hs-identifier hs-var">var</span></a></span></span><span>
</span><span id="line-131"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; Bool
</span><a href="GHC.Types.Var.html#isId"><span class="hs-identifier hs-var">isId</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842888"><span class="hs-identifier hs-var">var</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceIdBndr -&gt; IfaceBndr
</span><a href="GHC.Iface.Type.html#IfaceIdBndr"><span class="hs-identifier hs-var">IfaceIdBndr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; IfaceIdBndr
</span><a href="GHC.CoreToIface.html#toIfaceIdBndr"><span class="hs-identifier hs-var">toIfaceIdBndr</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842888"><span class="hs-identifier hs-var">var</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-132"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceTvBndr -&gt; IfaceBndr
</span><a href="GHC.Iface.Type.html#IfaceTvBndr"><span class="hs-identifier hs-var">IfaceTvBndr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; IfaceTvBndr
</span><a href="GHC.CoreToIface.html#toIfaceTvBndr"><span class="hs-identifier hs-var">toIfaceTvBndr</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842888"><span class="hs-identifier hs-var">var</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-133"></span><span>
</span><span id="line-134"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceBndrX"><span class="hs-identifier hs-type">toIfaceBndrX</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceBndr"><span class="hs-identifier hs-type">IfaceBndr</span></a></span><span>
</span><span id="line-135"></span><span id="toIfaceBndrX"><span class="annot"><span class="annottext">toIfaceBndrX :: VarSet -&gt; CoVar -&gt; IfaceBndr
</span><a href="GHC.CoreToIface.html#toIfaceBndrX"><span class="hs-identifier hs-var hs-var">toIfaceBndrX</span></a></span></span><span> </span><span id="local-6989586621680842883"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842883"><span class="hs-identifier hs-var">fr</span></a></span></span><span> </span><span id="local-6989586621680842882"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842882"><span class="hs-identifier hs-var">var</span></a></span></span><span>
</span><span id="line-136"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; Bool
</span><a href="GHC.Types.Var.html#isId"><span class="hs-identifier hs-var">isId</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842882"><span class="hs-identifier hs-var">var</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceIdBndr -&gt; IfaceBndr
</span><a href="GHC.Iface.Type.html#IfaceIdBndr"><span class="hs-identifier hs-var">IfaceIdBndr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; CoVar -&gt; IfaceIdBndr
</span><a href="GHC.CoreToIface.html#toIfaceIdBndrX"><span class="hs-identifier hs-var">toIfaceIdBndrX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842883"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842882"><span class="hs-identifier hs-var">var</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-137"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceTvBndr -&gt; IfaceBndr
</span><a href="GHC.Iface.Type.html#IfaceTvBndr"><span class="hs-identifier hs-var">IfaceTvBndr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; CoVar -&gt; IfaceTvBndr
</span><a href="GHC.CoreToIface.html#toIfaceTvBndrX"><span class="hs-identifier hs-var">toIfaceTvBndrX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842883"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842882"><span class="hs-identifier hs-var">var</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-138"></span><span>
</span><span id="line-139"></span><span id="local-6989586621680843134"><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTyCoVarBinder"><span class="hs-identifier hs-type">toIfaceTyCoVarBinder</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#VarBndr"><span class="hs-identifier hs-type">VarBndr</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680843134"><span class="hs-identifier hs-type">vis</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#VarBndr"><span class="hs-identifier hs-type">VarBndr</span></a></span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceBndr"><span class="hs-identifier hs-type">IfaceBndr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680843134"><span class="hs-identifier hs-type">vis</span></a></span></span><span>
</span><span id="line-140"></span><span id="toIfaceTyCoVarBinder"><span class="annot"><span class="annottext">toIfaceTyCoVarBinder :: forall vis. VarBndr CoVar vis -&gt; VarBndr IfaceBndr vis
</span><a href="GHC.CoreToIface.html#toIfaceTyCoVarBinder"><span class="hs-identifier hs-var hs-var">toIfaceTyCoVarBinder</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Bndr"><span class="hs-identifier hs-type">Bndr</span></a></span><span> </span><span id="local-6989586621680842879"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842879"><span class="hs-identifier hs-var">tv</span></a></span></span><span> </span><span id="local-6989586621680842878"><span class="annot"><span class="annottext">vis
</span><a href="#local-6989586621680842878"><span class="hs-identifier hs-var">vis</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceBndr -&gt; vis -&gt; VarBndr IfaceBndr vis
forall var argf. var -&gt; argf -&gt; VarBndr var argf
</span><a href="GHC.Types.Var.html#Bndr"><span class="hs-identifier hs-var">Bndr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; IfaceBndr
</span><a href="GHC.CoreToIface.html#toIfaceBndr"><span class="hs-identifier hs-var">toIfaceBndr</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842879"><span class="hs-identifier hs-var">tv</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">vis
</span><a href="#local-6989586621680842878"><span class="hs-identifier hs-var">vis</span></a></span><span>
</span><span id="line-141"></span><span>
</span><span id="line-142"></span><span id="local-6989586621680843129"><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTyCoVarBinders"><span class="hs-identifier hs-type">toIfaceTyCoVarBinders</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#VarBndr"><span class="hs-identifier hs-type">VarBndr</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680843129"><span class="hs-identifier hs-type">vis</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#VarBndr"><span class="hs-identifier hs-type">VarBndr</span></a></span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceBndr"><span class="hs-identifier hs-type">IfaceBndr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680843129"><span class="hs-identifier hs-type">vis</span></a></span><span class="hs-special">]</span></span><span>
</span><span id="line-143"></span><span id="toIfaceTyCoVarBinders"><span class="annot"><span class="annottext">toIfaceTyCoVarBinders :: forall vis. [VarBndr CoVar vis] -&gt; [VarBndr IfaceBndr vis]
</span><a href="GHC.CoreToIface.html#toIfaceTyCoVarBinders"><span class="hs-identifier hs-var hs-var">toIfaceTyCoVarBinders</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(VarBndr CoVar vis -&gt; VarBndr IfaceBndr vis)
-&gt; [VarBndr CoVar vis] -&gt; [VarBndr IfaceBndr vis]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">VarBndr CoVar vis -&gt; VarBndr IfaceBndr vis
forall vis. VarBndr CoVar vis -&gt; VarBndr IfaceBndr vis
</span><a href="GHC.CoreToIface.html#toIfaceTyCoVarBinder"><span class="hs-identifier hs-var">toIfaceTyCoVarBinder</span></a></span><span>
</span><span id="line-144"></span><span>
</span><span id="line-145"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
        Conversion from Type to IfaceType
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-152"></span><span>
</span><span id="line-153"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceKind"><span class="hs-identifier hs-type">toIfaceKind</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceType"><span class="hs-identifier hs-type">IfaceType</span></a></span><span>
</span><span id="line-154"></span><span id="toIfaceKind"><span class="annot"><span class="annottext">toIfaceKind :: Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceKind"><span class="hs-identifier hs-var hs-var">toIfaceKind</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceType"><span class="hs-identifier hs-var">toIfaceType</span></a></span><span>
</span><span id="line-155"></span><span>
</span><span id="line-156"></span><span class="hs-comment">---------------------</span><span>
</span><span id="line-157"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceType"><span class="hs-identifier hs-type">toIfaceType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceType"><span class="hs-identifier hs-type">IfaceType</span></a></span><span>
</span><span id="line-158"></span><span id="toIfaceType"><span class="annot"><span class="annottext">toIfaceType :: Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceType"><span class="hs-identifier hs-var hs-var">toIfaceType</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="GHC.Types.Var.Set.html#emptyVarSet"><span class="hs-identifier hs-var">emptyVarSet</span></a></span><span>
</span><span id="line-159"></span><span>
</span><span id="line-160"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-type">toIfaceTypeX</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceType"><span class="hs-identifier hs-type">IfaceType</span></a></span><span>
</span><span id="line-161"></span><span class="hs-comment">-- (toIfaceTypeX free ty)</span><span>
</span><span id="line-162"></span><span class="hs-comment">--    translates the tyvars in 'free' as IfaceFreeTyVars</span><span>
</span><span id="line-163"></span><span class="hs-comment">--</span><span>
</span><span id="line-164"></span><span class="hs-comment">-- Synonyms are retained in the interface type</span><span>
</span><span id="line-165"></span><span id="toIfaceTypeX"><span class="annot"><span class="annottext">toIfaceTypeX :: VarSet -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var hs-var">toIfaceTypeX</span></a></span></span><span> </span><span id="local-6989586621680842877"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842877"><span class="hs-identifier hs-var">fr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#TyVarTy"><span class="hs-identifier hs-type">TyVarTy</span></a></span><span> </span><span id="local-6989586621680842875"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842875"><span class="hs-identifier hs-var">tv</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-comment">-- See Note [TcTyVars in IfaceType] in GHC.Iface.Type</span><span>
</span><span id="line-166"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842875"><span class="hs-identifier hs-var">tv</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; VarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#elemVarSet"><span class="hs-operator hs-var">`elemVarSet`</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842877"><span class="hs-identifier hs-var">fr</span></a></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; IfaceType
</span><a href="GHC.Iface.Type.html#IfaceFreeTyVar"><span class="hs-identifier hs-var">IfaceFreeTyVar</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842875"><span class="hs-identifier hs-var">tv</span></a></span><span>
</span><span id="line-167"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; IfaceType
</span><a href="GHC.Iface.Type.html#IfaceTyVar"><span class="hs-identifier hs-var">IfaceTyVar</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; FastString
</span><a href="GHC.CoreToIface.html#toIfaceTyVar"><span class="hs-identifier hs-var">toIfaceTyVar</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842875"><span class="hs-identifier hs-var">tv</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-168"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span id="local-6989586621680842871"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842871"><span class="hs-identifier hs-var">fr</span></a></span></span><span> </span><span id="local-6989586621680842870"><span class="annot"><span class="annottext">ty :: Type
</span><a href="#local-6989586621680842870"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#AppTy"><span class="hs-identifier hs-type">AppTy</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span>
</span><span id="line-169"></span><span>  </span><span class="hs-comment">-- Flatten as many argument AppTys as possible, then turn them into an</span><span>
</span><span id="line-170"></span><span>  </span><span class="hs-comment">-- IfaceAppArgs list.</span><span>
</span><span id="line-171"></span><span>  </span><span class="hs-comment">-- See Note [Suppressing invisible arguments] in GHC.Iface.Type.</span><span>
</span><span id="line-172"></span><span>  </span><span class="hs-keyword">let</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680842868"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842868"><span class="hs-identifier hs-var">head</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680842867"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842867"><span class="hs-identifier hs-var">args</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type -&gt; (Type, [Type])
</span><a href="GHC.Core.Type.html#splitAppTys"><span class="hs-identifier hs-var">splitAppTys</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842870"><span class="hs-identifier hs-var">ty</span></a></span><span>
</span><span id="line-173"></span><span>  </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">IfaceType -&gt; IfaceAppArgs -&gt; IfaceType
</span><a href="GHC.Iface.Type.html#IfaceAppTy"><span class="hs-identifier hs-var">IfaceAppTy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842871"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842868"><span class="hs-identifier hs-var">head</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="GHC.CoreToIface.html#toIfaceAppTyArgsX"><span class="hs-identifier hs-var">toIfaceAppTyArgsX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842871"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842868"><span class="hs-identifier hs-var">head</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842867"><span class="hs-identifier hs-var">args</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-174"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><span class="hs-identifier">_</span></span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#LitTy"><span class="hs-identifier hs-type">LitTy</span></a></span><span> </span><span id="local-6989586621680842862"><span class="annot"><span class="annottext">TyLit
</span><a href="#local-6989586621680842862"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceTyLit -&gt; IfaceType
</span><a href="GHC.Iface.Type.html#IfaceLitTy"><span class="hs-identifier hs-var">IfaceLitTy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyLit -&gt; IfaceTyLit
</span><a href="GHC.CoreToIface.html#toIfaceTyLit"><span class="hs-identifier hs-var">toIfaceTyLit</span></a></span><span> </span><span class="annot"><span class="annottext">TyLit
</span><a href="#local-6989586621680842862"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-175"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span id="local-6989586621680842860"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842860"><span class="hs-identifier hs-var">fr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#ForAllTy"><span class="hs-identifier hs-type">ForAllTy</span></a></span><span> </span><span id="local-6989586621680842858"><span class="annot"><span class="annottext">TyCoVarBinder
</span><a href="#local-6989586621680842858"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span id="local-6989586621680842857"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842857"><span class="hs-identifier hs-var">t</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceForAllBndr -&gt; IfaceType -&gt; IfaceType
</span><a href="GHC.Iface.Type.html#IfaceForAllTy"><span class="hs-identifier hs-var">IfaceForAllTy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; TyCoVarBinder -&gt; IfaceForAllBndr
forall flag. VarSet -&gt; VarBndr CoVar flag -&gt; VarBndr IfaceBndr flag
</span><a href="GHC.CoreToIface.html#toIfaceForAllBndrX"><span class="hs-identifier hs-var">toIfaceForAllBndrX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842860"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">TyCoVarBinder
</span><a href="#local-6989586621680842858"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-176"></span><span>                                               </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842860"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; CoVar -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#delVarSet"><span class="hs-operator hs-var">`delVarSet`</span></a></span><span> </span><span class="annot"><span class="annottext">TyCoVarBinder -&gt; CoVar
forall tv argf. VarBndr tv argf -&gt; tv
</span><a href="GHC.Types.Var.html#binderVar"><span class="hs-identifier hs-var">binderVar</span></a></span><span> </span><span class="annot"><span class="annottext">TyCoVarBinder
</span><a href="#local-6989586621680842858"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842857"><span class="hs-identifier hs-var">t</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-177"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span id="local-6989586621680842852"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842852"><span class="hs-identifier hs-var">fr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#FunTy"><span class="hs-identifier hs-type">FunTy</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">ft_arg :: Type -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#ft_arg"><span class="hs-identifier hs-var">ft_arg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680842849"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842849"><span class="hs-identifier hs-var">t1</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ft_mult :: Type -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#ft_mult"><span class="hs-identifier hs-var">ft_mult</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680842847"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842847"><span class="hs-identifier hs-var">w</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ft_res :: Type -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#ft_res"><span class="hs-identifier hs-var">ft_res</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680842845"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842845"><span class="hs-identifier hs-var">t2</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ft_af :: Type -&gt; AnonArgFlag
</span><a href="GHC.Core.TyCo.Rep.html#ft_af"><span class="hs-identifier hs-var">ft_af</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680842843"><span class="annot"><span class="annottext">AnonArgFlag
</span><a href="#local-6989586621680842843"><span class="hs-identifier hs-var">af</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-178"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">AnonArgFlag -&gt; IfaceType -&gt; IfaceType -&gt; IfaceType -&gt; IfaceType
</span><a href="GHC.Iface.Type.html#IfaceFunTy"><span class="hs-identifier hs-var">IfaceFunTy</span></a></span><span> </span><span class="annot"><span class="annottext">AnonArgFlag
</span><a href="#local-6989586621680842843"><span class="hs-identifier hs-var">af</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842852"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842847"><span class="hs-identifier hs-var">w</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842852"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842849"><span class="hs-identifier hs-var">t1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842852"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842845"><span class="hs-identifier hs-var">t2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-179"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span id="local-6989586621680842841"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842841"><span class="hs-identifier hs-var">fr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#CastTy"><span class="hs-identifier hs-type">CastTy</span></a></span><span> </span><span id="local-6989586621680842839"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842839"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span id="local-6989586621680842838"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842838"><span class="hs-identifier hs-var">co</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceType -&gt; IfaceCoercion -&gt; IfaceType
</span><a href="GHC.Iface.Type.html#IfaceCastTy"><span class="hs-identifier hs-var">IfaceCastTy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842841"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842839"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; KindCoercion -&gt; IfaceCoercion
</span><a href="GHC.CoreToIface.html#toIfaceCoercionX"><span class="hs-identifier hs-var">toIfaceCoercionX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842841"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842838"><span class="hs-identifier hs-var">co</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-180"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span id="local-6989586621680842836"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842836"><span class="hs-identifier hs-var">fr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#CoercionTy"><span class="hs-identifier hs-type">CoercionTy</span></a></span><span> </span><span id="local-6989586621680842834"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842834"><span class="hs-identifier hs-var">co</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceCoercion -&gt; IfaceType
</span><a href="GHC.Iface.Type.html#IfaceCoercionTy"><span class="hs-identifier hs-var">IfaceCoercionTy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; KindCoercion -&gt; IfaceCoercion
</span><a href="GHC.CoreToIface.html#toIfaceCoercionX"><span class="hs-identifier hs-var">toIfaceCoercionX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842836"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842834"><span class="hs-identifier hs-var">co</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-181"></span><span>
</span><span id="line-182"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span id="local-6989586621680842832"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842832"><span class="hs-identifier hs-var">fr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#TyConApp"><span class="hs-identifier hs-type">TyConApp</span></a></span><span> </span><span id="local-6989586621680842830"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842830"><span class="hs-identifier hs-var">tc</span></a></span></span><span> </span><span id="local-6989586621680842829"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842829"><span class="hs-identifier hs-var">tys</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-183"></span><span>    </span><span class="hs-comment">-- tuples</span><span>
</span><span id="line-184"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680842828"><span class="annot"><span class="annottext">TupleSort
</span><a href="#local-6989586621680842828"><span class="hs-identifier hs-var">sort</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Maybe TupleSort
</span><a href="GHC.Core.TyCon.html#tyConTuple_maybe"><span class="hs-identifier hs-var">tyConTuple_maybe</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842830"><span class="hs-identifier hs-var">tc</span></a></span><span>
</span><span id="line-185"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842826"><span class="hs-identifier hs-var">n_tys</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842825"><span class="hs-identifier hs-var">arity</span></a></span><span>
</span><span id="line-186"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TupleSort -&gt; PromotionFlag -&gt; IfaceAppArgs -&gt; IfaceType
</span><a href="GHC.Iface.Type.html#IfaceTupleTy"><span class="hs-identifier hs-var">IfaceTupleTy</span></a></span><span> </span><span class="annot"><span class="annottext">TupleSort
</span><a href="#local-6989586621680842828"><span class="hs-identifier hs-var">sort</span></a></span><span> </span><span class="annot"><span class="annottext">PromotionFlag
</span><a href="GHC.Types.Basic.html#NotPromoted"><span class="hs-identifier hs-var">NotPromoted</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; TyCon -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="GHC.CoreToIface.html#toIfaceTcArgsX"><span class="hs-identifier hs-var">toIfaceTcArgsX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842832"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842830"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842829"><span class="hs-identifier hs-var">tys</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-187"></span><span>
</span><span id="line-188"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680842821"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680842821"><span class="hs-identifier hs-var">dc</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Maybe DataCon
</span><a href="GHC.Core.TyCon.html#isPromotedDataCon_maybe"><span class="hs-identifier hs-var">isPromotedDataCon_maybe</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842830"><span class="hs-identifier hs-var">tc</span></a></span><span>
</span><span id="line-189"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; Bool
</span><a href="GHC.Core.DataCon.html#isTupleDataCon"><span class="hs-identifier hs-var">isTupleDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680842821"><span class="hs-identifier hs-var">dc</span></a></span><span>
</span><span id="line-190"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842826"><span class="hs-identifier hs-var">n_tys</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2A"><span class="hs-operator hs-var">*</span></a></span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842825"><span class="hs-identifier hs-var">arity</span></a></span><span>
</span><span id="line-191"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TupleSort -&gt; PromotionFlag -&gt; IfaceAppArgs -&gt; IfaceType
</span><a href="GHC.Iface.Type.html#IfaceTupleTy"><span class="hs-identifier hs-var">IfaceTupleTy</span></a></span><span> </span><span class="annot"><span class="annottext">TupleSort
</span><a href="GHC.Types.Basic.html#BoxedTuple"><span class="hs-identifier hs-var">BoxedTuple</span></a></span><span> </span><span class="annot"><span class="annottext">PromotionFlag
</span><a href="GHC.Types.Basic.html#IsPromoted"><span class="hs-identifier hs-var">IsPromoted</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; TyCon -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="GHC.CoreToIface.html#toIfaceTcArgsX"><span class="hs-identifier hs-var">toIfaceTcArgsX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842832"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842830"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; [Type] -&gt; [Type]
forall a. Int -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.List.html#drop"><span class="hs-identifier hs-var">drop</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842825"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842829"><span class="hs-identifier hs-var">tys</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-192"></span><span>
</span><span id="line-193"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842830"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [TyCon] -&gt; Bool
forall (t :: * -&gt; *) a. (Foldable t, Eq a) =&gt; a -&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#elem"><span class="hs-operator hs-var">`elem`</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#eqPrimTyCon"><span class="hs-identifier hs-var">eqPrimTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.Prim.html#eqReprPrimTyCon"><span class="hs-identifier hs-var">eqReprPrimTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="GHC.Builtin.Types.html#heqTyCon"><span class="hs-identifier hs-var">heqTyCon</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-194"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680842813"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842813"><span class="hs-identifier hs-var">k1</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span id="local-6989586621680842812"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842812"><span class="hs-identifier hs-var">k2</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span class="annot"><span class="annottext">[Type]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842829"><span class="hs-identifier hs-var">tys</span></a></span><span>
</span><span id="line-195"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621680842811"><span class="annot"><span class="annottext">info :: IfaceTyConInfo
</span><a href="#local-6989586621680842811"><span class="hs-identifier hs-var hs-var">info</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PromotionFlag -&gt; IfaceTyConSort -&gt; IfaceTyConInfo
</span><a href="GHC.Iface.Type.html#IfaceTyConInfo"><span class="hs-identifier hs-var">IfaceTyConInfo</span></a></span><span> </span><span class="annot"><span class="annottext">PromotionFlag
</span><a href="GHC.Types.Basic.html#NotPromoted"><span class="hs-identifier hs-var">NotPromoted</span></a></span><span> </span><span class="annot"><span class="annottext">IfaceTyConSort
</span><a href="#local-6989586621680842809"><span class="hs-identifier hs-var">sort</span></a></span><span>
</span><span id="line-196"></span><span>        </span><span id="local-6989586621680842809"><span class="annot"><span class="annottext">sort :: IfaceTyConSort
</span><a href="#local-6989586621680842809"><span class="hs-identifier hs-var hs-var">sort</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842813"><span class="hs-identifier hs-var">k1</span></a></span><span> </span><span class="annot"><span class="annottext">Type -&gt; Type -&gt; Bool
</span><a href="GHC.Core.Type.html#eqType"><span class="hs-operator hs-var">`eqType`</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842812"><span class="hs-identifier hs-var">k2</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceTyConSort
</span><a href="GHC.Iface.Type.html#IfaceEqualityTyCon"><span class="hs-identifier hs-var">IfaceEqualityTyCon</span></a></span><span>
</span><span id="line-197"></span><span>             </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceTyConSort
</span><a href="GHC.Iface.Type.html#IfaceNormalTyCon"><span class="hs-identifier hs-var">IfaceNormalTyCon</span></a></span><span>
</span><span id="line-198"></span><span>    </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">IfaceTyCon -&gt; IfaceAppArgs -&gt; IfaceType
</span><a href="GHC.Iface.Type.html#IfaceTyConApp"><span class="hs-identifier hs-var">IfaceTyConApp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; IfaceTyConInfo -&gt; IfaceTyCon
</span><a href="GHC.Iface.Type.html#IfaceTyCon"><span class="hs-identifier hs-var">IfaceTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; Name
</span><a href="GHC.Core.TyCon.html#tyConName"><span class="hs-identifier hs-var hs-var">tyConName</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842830"><span class="hs-identifier hs-var">tc</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">IfaceTyConInfo
</span><a href="#local-6989586621680842811"><span class="hs-identifier hs-var">info</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; TyCon -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="GHC.CoreToIface.html#toIfaceTcArgsX"><span class="hs-identifier hs-var">toIfaceTcArgsX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842832"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842830"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842829"><span class="hs-identifier hs-var">tys</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-199"></span><span>
</span><span id="line-200"></span><span>    </span><span class="hs-comment">-- other applications</span><span>
</span><span id="line-201"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-202"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceTyCon -&gt; IfaceAppArgs -&gt; IfaceType
</span><a href="GHC.Iface.Type.html#IfaceTyConApp"><span class="hs-identifier hs-var">IfaceTyConApp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; IfaceTyCon
</span><a href="GHC.CoreToIface.html#toIfaceTyCon"><span class="hs-identifier hs-var">toIfaceTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842830"><span class="hs-identifier hs-var">tc</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; TyCon -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="GHC.CoreToIface.html#toIfaceTcArgsX"><span class="hs-identifier hs-var">toIfaceTcArgsX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842832"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842830"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842829"><span class="hs-identifier hs-var">tys</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-203"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-204"></span><span>    </span><span id="local-6989586621680842825"><span class="annot"><span class="annottext">arity :: Int
</span><a href="#local-6989586621680842825"><span class="hs-identifier hs-var hs-var">arity</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Int
</span><a href="GHC.Core.TyCon.html#tyConArity"><span class="hs-identifier hs-var hs-var">tyConArity</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842830"><span class="hs-identifier hs-var">tc</span></a></span><span>
</span><span id="line-205"></span><span>    </span><span id="local-6989586621680842826"><span class="annot"><span class="annottext">n_tys :: Int
</span><a href="#local-6989586621680842826"><span class="hs-identifier hs-var hs-var">n_tys</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Type] -&gt; Int
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Int
</span><a href="../../base/src/Data.Foldable.html#length"><span class="hs-identifier hs-var">length</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842829"><span class="hs-identifier hs-var">tys</span></a></span><span>
</span><span id="line-206"></span><span>
</span><span id="line-207"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTyVar"><span class="hs-identifier hs-type">toIfaceTyVar</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html#FastString"><span class="hs-identifier hs-type">FastString</span></a></span><span>
</span><span id="line-208"></span><span id="toIfaceTyVar"><span class="annot"><span class="annottext">toIfaceTyVar :: CoVar -&gt; FastString
</span><a href="GHC.CoreToIface.html#toIfaceTyVar"><span class="hs-identifier hs-var hs-var">toIfaceTyVar</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">OccName -&gt; FastString
</span><a href="GHC.Types.Name.Occurrence.html#occNameFS"><span class="hs-identifier hs-var hs-var">occNameFS</span></a></span><span> </span><span class="annot"><span class="annottext">(OccName -&gt; FastString)
-&gt; (CoVar -&gt; OccName) -&gt; CoVar -&gt; FastString
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; OccName
forall a. NamedThing a =&gt; a -&gt; OccName
</span><a href="GHC.Types.Name.html#getOccName"><span class="hs-identifier hs-var">getOccName</span></a></span><span>
</span><span id="line-209"></span><span>
</span><span id="line-210"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceCoVar"><span class="hs-identifier hs-type">toIfaceCoVar</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#CoVar"><span class="hs-identifier hs-type">CoVar</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html#FastString"><span class="hs-identifier hs-type">FastString</span></a></span><span>
</span><span id="line-211"></span><span id="toIfaceCoVar"><span class="annot"><span class="annottext">toIfaceCoVar :: CoVar -&gt; FastString
</span><a href="GHC.CoreToIface.html#toIfaceCoVar"><span class="hs-identifier hs-var hs-var">toIfaceCoVar</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">OccName -&gt; FastString
</span><a href="GHC.Types.Name.Occurrence.html#occNameFS"><span class="hs-identifier hs-var hs-var">occNameFS</span></a></span><span> </span><span class="annot"><span class="annottext">(OccName -&gt; FastString)
-&gt; (CoVar -&gt; OccName) -&gt; CoVar -&gt; FastString
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; OccName
forall a. NamedThing a =&gt; a -&gt; OccName
</span><a href="GHC.Types.Name.html#getOccName"><span class="hs-identifier hs-var">getOccName</span></a></span><span>
</span><span id="line-212"></span><span>
</span><span id="line-213"></span><span id="local-6989586621680842797"><span class="annot"><a href="GHC.CoreToIface.html#toIfaceForAllBndr"><span class="hs-identifier hs-type">toIfaceForAllBndr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#VarBndr"><span class="hs-identifier hs-type">VarBndr</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#TyCoVar"><span class="hs-identifier hs-type">TyCoVar</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680842797"><span class="hs-identifier hs-type">flag</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#VarBndr"><span class="hs-identifier hs-type">VarBndr</span></a></span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceBndr"><span class="hs-identifier hs-type">IfaceBndr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680842797"><span class="hs-identifier hs-type">flag</span></a></span><span class="hs-special">)</span></span><span>
</span><span id="line-214"></span><span id="toIfaceForAllBndr"><span class="annot"><span class="annottext">toIfaceForAllBndr :: forall vis. VarBndr CoVar vis -&gt; VarBndr IfaceBndr vis
</span><a href="GHC.CoreToIface.html#toIfaceForAllBndr"><span class="hs-identifier hs-var hs-var">toIfaceForAllBndr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; VarBndr CoVar flag -&gt; VarBndr IfaceBndr flag
forall flag. VarSet -&gt; VarBndr CoVar flag -&gt; VarBndr IfaceBndr flag
</span><a href="GHC.CoreToIface.html#toIfaceForAllBndrX"><span class="hs-identifier hs-var">toIfaceForAllBndrX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="GHC.Types.Var.Set.html#emptyVarSet"><span class="hs-identifier hs-var">emptyVarSet</span></a></span><span>
</span><span id="line-215"></span><span>
</span><span id="line-216"></span><span id="local-6989586621680843122"><span class="annot"><a href="GHC.CoreToIface.html#toIfaceForAllBndrX"><span class="hs-identifier hs-type">toIfaceForAllBndrX</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#VarBndr"><span class="hs-identifier hs-type">VarBndr</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#TyCoVar"><span class="hs-identifier hs-type">TyCoVar</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680843122"><span class="hs-identifier hs-type">flag</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#VarBndr"><span class="hs-identifier hs-type">VarBndr</span></a></span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceBndr"><span class="hs-identifier hs-type">IfaceBndr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680843122"><span class="hs-identifier hs-type">flag</span></a></span><span class="hs-special">)</span></span><span>
</span><span id="line-217"></span><span id="toIfaceForAllBndrX"><span class="annot"><span class="annottext">toIfaceForAllBndrX :: forall flag. VarSet -&gt; VarBndr CoVar flag -&gt; VarBndr IfaceBndr flag
</span><a href="GHC.CoreToIface.html#toIfaceForAllBndrX"><span class="hs-identifier hs-var hs-var">toIfaceForAllBndrX</span></a></span></span><span> </span><span id="local-6989586621680842795"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842795"><span class="hs-identifier hs-var">fr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Bndr"><span class="hs-identifier hs-type">Bndr</span></a></span><span> </span><span id="local-6989586621680842794"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842794"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span id="local-6989586621680842793"><span class="annot"><span class="annottext">flag
</span><a href="#local-6989586621680842793"><span class="hs-identifier hs-var">vis</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceBndr -&gt; flag -&gt; VarBndr IfaceBndr flag
forall var argf. var -&gt; argf -&gt; VarBndr var argf
</span><a href="GHC.Types.Var.html#Bndr"><span class="hs-identifier hs-var">Bndr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; CoVar -&gt; IfaceBndr
</span><a href="GHC.CoreToIface.html#toIfaceBndrX"><span class="hs-identifier hs-var">toIfaceBndrX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842795"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842794"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">flag
</span><a href="#local-6989586621680842793"><span class="hs-identifier hs-var">vis</span></a></span><span>
</span><span id="line-218"></span><span>
</span><span id="line-219"></span><span class="hs-comment">----------------</span><span>
</span><span id="line-220"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTyCon"><span class="hs-identifier hs-type">toIfaceTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceTyCon"><span class="hs-identifier hs-type">IfaceTyCon</span></a></span><span>
</span><span id="line-221"></span><span id="toIfaceTyCon"><span class="annot"><span class="annottext">toIfaceTyCon :: TyCon -&gt; IfaceTyCon
</span><a href="GHC.CoreToIface.html#toIfaceTyCon"><span class="hs-identifier hs-var hs-var">toIfaceTyCon</span></a></span></span><span> </span><span id="local-6989586621680842792"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842792"><span class="hs-identifier hs-var">tc</span></a></span></span><span>
</span><span id="line-222"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; IfaceTyConInfo -&gt; IfaceTyCon
</span><a href="GHC.Iface.Type.html#IfaceTyCon"><span class="hs-identifier hs-var">IfaceTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680842791"><span class="hs-identifier hs-var">tc_name</span></a></span><span> </span><span class="annot"><span class="annottext">IfaceTyConInfo
</span><a href="#local-6989586621680842790"><span class="hs-identifier hs-var">info</span></a></span><span>
</span><span id="line-223"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-224"></span><span>    </span><span id="local-6989586621680842791"><span class="annot"><span class="annottext">tc_name :: Name
</span><a href="#local-6989586621680842791"><span class="hs-identifier hs-var hs-var">tc_name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Name
</span><a href="GHC.Core.TyCon.html#tyConName"><span class="hs-identifier hs-var hs-var">tyConName</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842792"><span class="hs-identifier hs-var">tc</span></a></span><span>
</span><span id="line-225"></span><span>    </span><span id="local-6989586621680842790"><span class="annot"><span class="annottext">info :: IfaceTyConInfo
</span><a href="#local-6989586621680842790"><span class="hs-identifier hs-var hs-var">info</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PromotionFlag -&gt; IfaceTyConSort -&gt; IfaceTyConInfo
</span><a href="GHC.Iface.Type.html#IfaceTyConInfo"><span class="hs-identifier hs-var">IfaceTyConInfo</span></a></span><span> </span><span class="annot"><span class="annottext">PromotionFlag
</span><a href="#local-6989586621680842789"><span class="hs-identifier hs-var">promoted</span></a></span><span> </span><span class="annot"><span class="annottext">IfaceTyConSort
</span><a href="#local-6989586621680842788"><span class="hs-identifier hs-var">sort</span></a></span><span>
</span><span id="line-226"></span><span>    </span><span id="local-6989586621680842789"><span class="annot"><span class="annottext">promoted :: PromotionFlag
</span><a href="#local-6989586621680842789"><span class="hs-identifier hs-var hs-var">promoted</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Bool
</span><a href="GHC.Core.TyCon.html#isPromotedDataCon"><span class="hs-identifier hs-var">isPromotedDataCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842792"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PromotionFlag
</span><a href="GHC.Types.Basic.html#IsPromoted"><span class="hs-identifier hs-var">IsPromoted</span></a></span><span>
</span><span id="line-227"></span><span>             </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PromotionFlag
</span><a href="GHC.Types.Basic.html#NotPromoted"><span class="hs-identifier hs-var">NotPromoted</span></a></span><span>
</span><span id="line-228"></span><span>
</span><span id="line-229"></span><span>    </span><span class="annot"><a href="#local-6989586621680842786"><span class="hs-identifier hs-type">tupleSort</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceTyConSort"><span class="hs-identifier hs-type">IfaceTyConSort</span></a></span><span>
</span><span id="line-230"></span><span>    </span><span id="local-6989586621680842786"><span class="annot"><span class="annottext">tupleSort :: TyCon -&gt; Maybe IfaceTyConSort
</span><a href="#local-6989586621680842786"><span class="hs-identifier hs-var hs-var">tupleSort</span></a></span></span><span> </span><span id="local-6989586621680842785"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842785"><span class="hs-identifier hs-var">tc'</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-231"></span><span>        </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Maybe TupleSort
</span><a href="GHC.Core.TyCon.html#tyConTuple_maybe"><span class="hs-identifier hs-var">tyConTuple_maybe</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842785"><span class="hs-identifier hs-var">tc'</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-232"></span><span>          </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="annot"><span class="annottext">TupleSort
</span><a href="GHC.Types.Basic.html#UnboxedTuple"><span class="hs-identifier hs-var">UnboxedTuple</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621680842780"><span class="annot"><span class="annottext">arity :: Int
</span><a href="#local-6989586621680842780"><span class="hs-identifier hs-var hs-var">arity</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Int
</span><a href="GHC.Core.TyCon.html#tyConArity"><span class="hs-identifier hs-var hs-var">tyConArity</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842785"><span class="hs-identifier hs-var">tc'</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Integral a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Real.html#div"><span class="hs-operator hs-var">`div`</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span>
</span><span id="line-233"></span><span>                               </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">IfaceTyConSort -&gt; Maybe IfaceTyConSort
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">(IfaceTyConSort -&gt; Maybe IfaceTyConSort)
-&gt; IfaceTyConSort -&gt; Maybe IfaceTyConSort
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; TupleSort -&gt; IfaceTyConSort
</span><a href="GHC.Iface.Type.html#IfaceTupleTyCon"><span class="hs-identifier hs-var">IfaceTupleTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842780"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="annot"><span class="annottext">TupleSort
</span><a href="GHC.Types.Basic.html#UnboxedTuple"><span class="hs-identifier hs-var">UnboxedTuple</span></a></span><span>
</span><span id="line-234"></span><span>          </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680842777"><span class="annot"><span class="annottext">TupleSort
</span><a href="#local-6989586621680842777"><span class="hs-identifier hs-var">sort</span></a></span></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621680842776"><span class="annot"><span class="annottext">arity :: Int
</span><a href="#local-6989586621680842776"><span class="hs-identifier hs-var hs-var">arity</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Int
</span><a href="GHC.Core.TyCon.html#tyConArity"><span class="hs-identifier hs-var hs-var">tyConArity</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842785"><span class="hs-identifier hs-var">tc'</span></a></span><span>
</span><span id="line-235"></span><span>                               </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">IfaceTyConSort -&gt; Maybe IfaceTyConSort
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">(IfaceTyConSort -&gt; Maybe IfaceTyConSort)
-&gt; IfaceTyConSort -&gt; Maybe IfaceTyConSort
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; TupleSort -&gt; IfaceTyConSort
</span><a href="GHC.Iface.Type.html#IfaceTupleTyCon"><span class="hs-identifier hs-var">IfaceTupleTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842776"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="annot"><span class="annottext">TupleSort
</span><a href="#local-6989586621680842777"><span class="hs-identifier hs-var">sort</span></a></span><span>
</span><span id="line-236"></span><span>          </span><span class="annot"><span class="annottext">Maybe TupleSort
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Maybe IfaceTyConSort
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-237"></span><span>
</span><span id="line-238"></span><span>    </span><span id="local-6989586621680842788"><span class="annot"><span class="annottext">sort :: IfaceTyConSort
</span><a href="#local-6989586621680842788"><span class="hs-identifier hs-var hs-var">sort</span></a></span></span><span>
</span><span id="line-239"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680842774"><span class="annot"><span class="annottext">IfaceTyConSort
</span><a href="#local-6989586621680842774"><span class="hs-identifier hs-var">tsort</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Maybe IfaceTyConSort
</span><a href="#local-6989586621680842786"><span class="hs-identifier hs-var">tupleSort</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842792"><span class="hs-identifier hs-var">tc</span></a></span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceTyConSort
</span><a href="#local-6989586621680842774"><span class="hs-identifier hs-var">tsort</span></a></span><span>
</span><span id="line-240"></span><span>
</span><span id="line-241"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680842773"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680842773"><span class="hs-identifier hs-var">dcon</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Maybe DataCon
</span><a href="GHC.Core.TyCon.html#isPromotedDataCon_maybe"><span class="hs-identifier hs-var">isPromotedDataCon_maybe</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842792"><span class="hs-identifier hs-var">tc</span></a></span><span>
</span><span id="line-242"></span><span>      </span><span class="hs-special">,</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621680842772"><span class="annot"><span class="annottext">tc' :: TyCon
</span><a href="#local-6989586621680842772"><span class="hs-identifier hs-var hs-var">tc'</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#dataConTyCon"><span class="hs-identifier hs-var">dataConTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680842773"><span class="hs-identifier hs-var">dcon</span></a></span><span>
</span><span id="line-243"></span><span>      </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680842770"><span class="annot"><span class="annottext">IfaceTyConSort
</span><a href="#local-6989586621680842770"><span class="hs-identifier hs-var">tsort</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Maybe IfaceTyConSort
</span><a href="#local-6989586621680842786"><span class="hs-identifier hs-var">tupleSort</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842772"><span class="hs-identifier hs-var">tc'</span></a></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceTyConSort
</span><a href="#local-6989586621680842770"><span class="hs-identifier hs-var">tsort</span></a></span><span>
</span><span id="line-244"></span><span>
</span><span id="line-245"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Bool
</span><a href="GHC.Core.TyCon.html#isUnboxedSumTyCon"><span class="hs-identifier hs-var">isUnboxedSumTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842792"><span class="hs-identifier hs-var">tc</span></a></span><span>
</span><span id="line-246"></span><span>      </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680842768"><span class="annot"><span class="annottext">[DataCon]
</span><a href="#local-6989586621680842768"><span class="hs-identifier hs-var">cons</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Maybe [DataCon]
</span><a href="GHC.Core.TyCon.html#isDataSumTyCon_maybe"><span class="hs-identifier hs-var">isDataSumTyCon_maybe</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842792"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; IfaceTyConSort
</span><a href="GHC.Iface.Type.html#IfaceSumTyCon"><span class="hs-identifier hs-var">IfaceSumTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[DataCon] -&gt; Int
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Int
</span><a href="../../base/src/Data.Foldable.html#length"><span class="hs-identifier hs-var">length</span></a></span><span> </span><span class="annot"><span class="annottext">[DataCon]
</span><a href="#local-6989586621680842768"><span class="hs-identifier hs-var">cons</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-247"></span><span>
</span><span id="line-248"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceTyConSort
</span><a href="GHC.Iface.Type.html#IfaceNormalTyCon"><span class="hs-identifier hs-var">IfaceNormalTyCon</span></a></span><span>
</span><span id="line-249"></span><span>
</span><span id="line-250"></span><span>
</span><span id="line-251"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTyCon_name"><span class="hs-identifier hs-type">toIfaceTyCon_name</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceTyCon"><span class="hs-identifier hs-type">IfaceTyCon</span></a></span><span>
</span><span id="line-252"></span><span id="toIfaceTyCon_name"><span class="annot"><span class="annottext">toIfaceTyCon_name :: Name -&gt; IfaceTyCon
</span><a href="GHC.CoreToIface.html#toIfaceTyCon_name"><span class="hs-identifier hs-var hs-var">toIfaceTyCon_name</span></a></span></span><span> </span><span id="local-6989586621680842765"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680842765"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; IfaceTyConInfo -&gt; IfaceTyCon
</span><a href="GHC.Iface.Type.html#IfaceTyCon"><span class="hs-identifier hs-var">IfaceTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680842765"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">IfaceTyConInfo
</span><a href="#local-6989586621680842764"><span class="hs-identifier hs-var">info</span></a></span><span>
</span><span id="line-253"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621680842764"><span class="annot"><span class="annottext">info :: IfaceTyConInfo
</span><a href="#local-6989586621680842764"><span class="hs-identifier hs-var hs-var">info</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PromotionFlag -&gt; IfaceTyConSort -&gt; IfaceTyConInfo
</span><a href="GHC.Iface.Type.html#IfaceTyConInfo"><span class="hs-identifier hs-var">IfaceTyConInfo</span></a></span><span> </span><span class="annot"><span class="annottext">PromotionFlag
</span><a href="GHC.Types.Basic.html#NotPromoted"><span class="hs-identifier hs-var">NotPromoted</span></a></span><span> </span><span class="annot"><span class="annottext">IfaceTyConSort
</span><a href="GHC.Iface.Type.html#IfaceNormalTyCon"><span class="hs-identifier hs-var">IfaceNormalTyCon</span></a></span><span>
</span><span id="line-254"></span><span>  </span><span class="hs-comment">-- Used for the &quot;rough-match&quot; tycon stuff,</span><span>
</span><span id="line-255"></span><span>  </span><span class="hs-comment">-- where pretty-printing is not an issue</span><span>
</span><span id="line-256"></span><span>
</span><span id="line-257"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTyLit"><span class="hs-identifier hs-type">toIfaceTyLit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#TyLit"><span class="hs-identifier hs-type">TyLit</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceTyLit"><span class="hs-identifier hs-type">IfaceTyLit</span></a></span><span>
</span><span id="line-258"></span><span id="toIfaceTyLit"><span class="annot"><span class="annottext">toIfaceTyLit :: TyLit -&gt; IfaceTyLit
</span><a href="GHC.CoreToIface.html#toIfaceTyLit"><span class="hs-identifier hs-var hs-var">toIfaceTyLit</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#NumTyLit"><span class="hs-identifier hs-type">NumTyLit</span></a></span><span> </span><span id="local-6989586621680842762"><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621680842762"><span class="hs-identifier hs-var">x</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; IfaceTyLit
</span><a href="GHC.Iface.Type.html#IfaceNumTyLit"><span class="hs-identifier hs-var">IfaceNumTyLit</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><a href="#local-6989586621680842762"><span class="hs-identifier hs-var">x</span></a></span><span>
</span><span id="line-259"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTyLit"><span class="hs-identifier hs-var">toIfaceTyLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#StrTyLit"><span class="hs-identifier hs-type">StrTyLit</span></a></span><span> </span><span id="local-6989586621680842759"><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680842759"><span class="hs-identifier hs-var">x</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; IfaceTyLit
</span><a href="GHC.Iface.Type.html#IfaceStrTyLit"><span class="hs-identifier hs-var">IfaceStrTyLit</span></a></span><span> </span><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680842759"><span class="hs-identifier hs-var">x</span></a></span><span>
</span><span id="line-260"></span><span>
</span><span id="line-261"></span><span class="hs-comment">----------------</span><span>
</span><span id="line-262"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceCoercion"><span class="hs-identifier hs-type">toIfaceCoercion</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Coercion"><span class="hs-identifier hs-type">Coercion</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceCoercion"><span class="hs-identifier hs-type">IfaceCoercion</span></a></span><span>
</span><span id="line-263"></span><span id="toIfaceCoercion"><span class="annot"><span class="annottext">toIfaceCoercion :: KindCoercion -&gt; IfaceCoercion
</span><a href="GHC.CoreToIface.html#toIfaceCoercion"><span class="hs-identifier hs-var hs-var">toIfaceCoercion</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; KindCoercion -&gt; IfaceCoercion
</span><a href="GHC.CoreToIface.html#toIfaceCoercionX"><span class="hs-identifier hs-var">toIfaceCoercionX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="GHC.Types.Var.Set.html#emptyVarSet"><span class="hs-identifier hs-var">emptyVarSet</span></a></span><span>
</span><span id="line-264"></span><span>
</span><span id="line-265"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceCoercionX"><span class="hs-identifier hs-type">toIfaceCoercionX</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Coercion"><span class="hs-identifier hs-type">Coercion</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceCoercion"><span class="hs-identifier hs-type">IfaceCoercion</span></a></span><span>
</span><span id="line-266"></span><span class="hs-comment">-- (toIfaceCoercionX free ty)</span><span>
</span><span id="line-267"></span><span class="hs-comment">--    translates the tyvars in 'free' as IfaceFreeTyVars</span><span>
</span><span id="line-268"></span><span id="toIfaceCoercionX"><span class="annot"><span class="annottext">toIfaceCoercionX :: VarSet -&gt; KindCoercion -&gt; IfaceCoercion
</span><a href="GHC.CoreToIface.html#toIfaceCoercionX"><span class="hs-identifier hs-var hs-var">toIfaceCoercionX</span></a></span></span><span> </span><span id="local-6989586621680842756"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842756"><span class="hs-identifier hs-var">fr</span></a></span></span><span> </span><span id="local-6989586621680842755"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842755"><span class="hs-identifier hs-var">co</span></a></span></span><span>
</span><span id="line-269"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842755"><span class="hs-identifier hs-var">co</span></a></span><span>
</span><span id="line-270"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-271"></span><span>    </span><span id="local-6989586621680842749"><span class="annot"><span class="annottext">go_mco :: MCoercion -&gt; IfaceMCoercion
</span><a href="#local-6989586621680842749"><span class="hs-identifier hs-var hs-var">go_mco</span></a></span></span><span> </span><span class="annot"><span class="annottext">MCoercion
</span><a href="GHC.Core.TyCo.Rep.html#MRefl"><span class="hs-identifier hs-var">MRefl</span></a></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceMCoercion
</span><a href="GHC.Iface.Type.html#IfaceMRefl"><span class="hs-identifier hs-var">IfaceMRefl</span></a></span><span>
</span><span id="line-272"></span><span>    </span><span class="annot"><a href="#local-6989586621680842749"><span class="hs-identifier hs-var">go_mco</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#MCo"><span class="hs-identifier hs-type">MCo</span></a></span><span> </span><span id="local-6989586621680842745"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842745"><span class="hs-identifier hs-var">co</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceCoercion -&gt; IfaceMCoercion
</span><a href="GHC.Iface.Type.html#IfaceMCo"><span class="hs-identifier hs-var">IfaceMCo</span></a></span><span> </span><span class="annot"><span class="annottext">(IfaceCoercion -&gt; IfaceMCoercion)
-&gt; IfaceCoercion -&gt; IfaceMCoercion
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842745"><span class="hs-identifier hs-var">co</span></a></span><span>
</span><span id="line-273"></span><span>
</span><span id="line-274"></span><span>    </span><span id="local-6989586621680842754"><span class="annot"><span class="annottext">go :: KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var hs-var">go</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Refl"><span class="hs-identifier hs-type">Refl</span></a></span><span> </span><span id="local-6989586621680842742"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842742"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-special">)</span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceType -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceReflCo"><span class="hs-identifier hs-var">IfaceReflCo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842756"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842742"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-275"></span><span>    </span><span class="annot"><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#GRefl"><span class="hs-identifier hs-type">GRefl</span></a></span><span> </span><span id="local-6989586621680842739"><span class="annot"><span class="annottext">Role
</span><a href="#local-6989586621680842739"><span class="hs-identifier hs-var">r</span></a></span></span><span> </span><span id="local-6989586621680842738"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842738"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span id="local-6989586621680842737"><span class="annot"><span class="annottext">MCoercion
</span><a href="#local-6989586621680842737"><span class="hs-identifier hs-var">mco</span></a></span></span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Role -&gt; IfaceType -&gt; IfaceMCoercion -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceGReflCo"><span class="hs-identifier hs-var">IfaceGReflCo</span></a></span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="#local-6989586621680842739"><span class="hs-identifier hs-var">r</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842756"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842738"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">MCoercion -&gt; IfaceMCoercion
</span><a href="#local-6989586621680842749"><span class="hs-identifier hs-var">go_mco</span></a></span><span> </span><span class="annot"><span class="annottext">MCoercion
</span><a href="#local-6989586621680842737"><span class="hs-identifier hs-var">mco</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-276"></span><span>    </span><span class="annot"><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#CoVarCo"><span class="hs-identifier hs-type">CoVarCo</span></a></span><span> </span><span id="local-6989586621680842734"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842734"><span class="hs-identifier hs-var">cv</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-277"></span><span>      </span><span class="hs-comment">-- See [TcTyVars in IfaceType] in GHC.Iface.Type</span><span>
</span><span id="line-278"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842734"><span class="hs-identifier hs-var">cv</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; VarSet -&gt; Bool
</span><a href="GHC.Types.Var.Set.html#elemVarSet"><span class="hs-operator hs-var">`elemVarSet`</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842756"><span class="hs-identifier hs-var">fr</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceFreeCoVar"><span class="hs-identifier hs-var">IfaceFreeCoVar</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842734"><span class="hs-identifier hs-var">cv</span></a></span><span>
</span><span id="line-279"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceCoVarCo"><span class="hs-identifier hs-var">IfaceCoVarCo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; FastString
</span><a href="GHC.CoreToIface.html#toIfaceCoVar"><span class="hs-identifier hs-var">toIfaceCoVar</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842734"><span class="hs-identifier hs-var">cv</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-280"></span><span>    </span><span class="annot"><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#HoleCo"><span class="hs-identifier hs-type">HoleCo</span></a></span><span> </span><span id="local-6989586621680842730"><span class="annot"><span class="annottext">CoercionHole
</span><a href="#local-6989586621680842730"><span class="hs-identifier hs-var">h</span></a></span></span><span class="hs-special">)</span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceHoleCo"><span class="hs-identifier hs-var">IfaceHoleCo</span></a></span><span>  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoercionHole -&gt; CoVar
</span><a href="GHC.Core.TyCo.Rep.html#coHoleCoVar"><span class="hs-identifier hs-var">coHoleCoVar</span></a></span><span> </span><span class="annot"><span class="annottext">CoercionHole
</span><a href="#local-6989586621680842730"><span class="hs-identifier hs-var">h</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-281"></span><span>
</span><span id="line-282"></span><span>    </span><span class="annot"><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#AppCo"><span class="hs-identifier hs-type">AppCo</span></a></span><span> </span><span id="local-6989586621680842726"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842726"><span class="hs-identifier hs-var">co1</span></a></span></span><span> </span><span id="local-6989586621680842725"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842725"><span class="hs-identifier hs-var">co2</span></a></span></span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceCoercion -&gt; IfaceCoercion -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceAppCo"><span class="hs-identifier hs-var">IfaceAppCo</span></a></span><span>  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842726"><span class="hs-identifier hs-var">co1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842725"><span class="hs-identifier hs-var">co2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-283"></span><span>    </span><span class="annot"><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#SymCo"><span class="hs-identifier hs-type">SymCo</span></a></span><span> </span><span id="local-6989586621680842722"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842722"><span class="hs-identifier hs-var">co</span></a></span></span><span class="hs-special">)</span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceCoercion -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceSymCo"><span class="hs-identifier hs-var">IfaceSymCo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842722"><span class="hs-identifier hs-var">co</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-284"></span><span>    </span><span class="annot"><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#TransCo"><span class="hs-identifier hs-type">TransCo</span></a></span><span> </span><span id="local-6989586621680842719"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842719"><span class="hs-identifier hs-var">co1</span></a></span></span><span> </span><span id="local-6989586621680842718"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842718"><span class="hs-identifier hs-var">co2</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceCoercion -&gt; IfaceCoercion -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceTransCo"><span class="hs-identifier hs-var">IfaceTransCo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842719"><span class="hs-identifier hs-var">co1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842718"><span class="hs-identifier hs-var">co2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-285"></span><span>    </span><span class="annot"><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#NthCo"><span class="hs-identifier hs-type">NthCo</span></a></span><span> </span><span id="local-6989586621680842715"><span class="annot"><span class="annottext">Role
</span><a href="#local-6989586621680842715"><span class="hs-identifier hs-var">_r</span></a></span></span><span> </span><span id="local-6989586621680842714"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842714"><span class="hs-identifier hs-var">d</span></a></span></span><span> </span><span id="local-6989586621680842713"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842713"><span class="hs-identifier hs-var">co</span></a></span></span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; IfaceCoercion -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceNthCo"><span class="hs-identifier hs-var">IfaceNthCo</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842714"><span class="hs-identifier hs-var">d</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842713"><span class="hs-identifier hs-var">co</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-286"></span><span>    </span><span class="annot"><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#LRCo"><span class="hs-identifier hs-type">LRCo</span></a></span><span> </span><span id="local-6989586621680842710"><span class="annot"><span class="annottext">LeftOrRight
</span><a href="#local-6989586621680842710"><span class="hs-identifier hs-var">lr</span></a></span></span><span> </span><span id="local-6989586621680842709"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842709"><span class="hs-identifier hs-var">co</span></a></span></span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LeftOrRight -&gt; IfaceCoercion -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceLRCo"><span class="hs-identifier hs-var">IfaceLRCo</span></a></span><span> </span><span class="annot"><span class="annottext">LeftOrRight
</span><a href="#local-6989586621680842710"><span class="hs-identifier hs-var">lr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842709"><span class="hs-identifier hs-var">co</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-287"></span><span>    </span><span class="annot"><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#InstCo"><span class="hs-identifier hs-type">InstCo</span></a></span><span> </span><span id="local-6989586621680842706"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842706"><span class="hs-identifier hs-var">co</span></a></span></span><span> </span><span id="local-6989586621680842705"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842705"><span class="hs-identifier hs-var">arg</span></a></span></span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceCoercion -&gt; IfaceCoercion -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceInstCo"><span class="hs-identifier hs-var">IfaceInstCo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842706"><span class="hs-identifier hs-var">co</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842705"><span class="hs-identifier hs-var">arg</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-288"></span><span>    </span><span class="annot"><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#KindCo"><span class="hs-identifier hs-type">KindCo</span></a></span><span> </span><span id="local-6989586621680842702"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842702"><span class="hs-identifier hs-var">c</span></a></span></span><span class="hs-special">)</span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceCoercion -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceKindCo"><span class="hs-identifier hs-var">IfaceKindCo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842702"><span class="hs-identifier hs-var">c</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-289"></span><span>    </span><span class="annot"><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#SubCo"><span class="hs-identifier hs-type">SubCo</span></a></span><span> </span><span id="local-6989586621680842699"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842699"><span class="hs-identifier hs-var">co</span></a></span></span><span class="hs-special">)</span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceCoercion -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceSubCo"><span class="hs-identifier hs-var">IfaceSubCo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842699"><span class="hs-identifier hs-var">co</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-290"></span><span>    </span><span class="annot"><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#AxiomRuleCo"><span class="hs-identifier hs-type">AxiomRuleCo</span></a></span><span> </span><span id="local-6989586621680842696"><span class="annot"><span class="annottext">CoAxiomRule
</span><a href="#local-6989586621680842696"><span class="hs-identifier hs-var">co</span></a></span></span><span> </span><span id="local-6989586621680842695"><span class="annot"><span class="annottext">[KindCoercion]
</span><a href="#local-6989586621680842695"><span class="hs-identifier hs-var">cs</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; [IfaceCoercion] -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceAxiomRuleCo"><span class="hs-identifier hs-var">IfaceAxiomRuleCo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoAxiomRule -&gt; FastString
</span><a href="GHC.Core.Coercion.Axiom.html#coaxrName"><span class="hs-identifier hs-var hs-var">coaxrName</span></a></span><span> </span><span class="annot"><span class="annottext">CoAxiomRule
</span><a href="#local-6989586621680842696"><span class="hs-identifier hs-var">co</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(KindCoercion -&gt; IfaceCoercion)
-&gt; [KindCoercion] -&gt; [IfaceCoercion]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">[KindCoercion]
</span><a href="#local-6989586621680842695"><span class="hs-identifier hs-var">cs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-291"></span><span>    </span><span class="annot"><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#AxiomInstCo"><span class="hs-identifier hs-type">AxiomInstCo</span></a></span><span> </span><span id="local-6989586621680842691"><span class="annot"><span class="annottext">CoAxiom Branched
</span><a href="#local-6989586621680842691"><span class="hs-identifier hs-var">c</span></a></span></span><span> </span><span id="local-6989586621680842690"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842690"><span class="hs-identifier hs-var">i</span></a></span></span><span> </span><span id="local-6989586621680842689"><span class="annot"><span class="annottext">[KindCoercion]
</span><a href="#local-6989586621680842689"><span class="hs-identifier hs-var">cs</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Int -&gt; [IfaceCoercion] -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceAxiomInstCo"><span class="hs-identifier hs-var">IfaceAxiomInstCo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoAxiom Branched -&gt; Name
forall (br :: BranchFlag). CoAxiom br -&gt; Name
</span><a href="GHC.Core.Coercion.Axiom.html#coAxiomName"><span class="hs-identifier hs-var">coAxiomName</span></a></span><span> </span><span class="annot"><span class="annottext">CoAxiom Branched
</span><a href="#local-6989586621680842691"><span class="hs-identifier hs-var">c</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842690"><span class="hs-identifier hs-var">i</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(KindCoercion -&gt; IfaceCoercion)
-&gt; [KindCoercion] -&gt; [IfaceCoercion]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">[KindCoercion]
</span><a href="#local-6989586621680842689"><span class="hs-identifier hs-var">cs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-292"></span><span>    </span><span class="annot"><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#UnivCo"><span class="hs-identifier hs-type">UnivCo</span></a></span><span> </span><span id="local-6989586621680842685"><span class="annot"><span class="annottext">UnivCoProvenance
</span><a href="#local-6989586621680842685"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span id="local-6989586621680842684"><span class="annot"><span class="annottext">Role
</span><a href="#local-6989586621680842684"><span class="hs-identifier hs-var">r</span></a></span></span><span> </span><span id="local-6989586621680842683"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842683"><span class="hs-identifier hs-var">t1</span></a></span></span><span> </span><span id="local-6989586621680842682"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842682"><span class="hs-identifier hs-var">t2</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceUnivCoProv -&gt; Role -&gt; IfaceType -&gt; IfaceType -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceUnivCo"><span class="hs-identifier hs-var">IfaceUnivCo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">UnivCoProvenance -&gt; IfaceUnivCoProv
</span><a href="#local-6989586621680842680"><span class="hs-identifier hs-var">go_prov</span></a></span><span> </span><span class="annot"><span class="annottext">UnivCoProvenance
</span><a href="#local-6989586621680842685"><span class="hs-identifier hs-var">p</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="#local-6989586621680842684"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-293"></span><span>                                          </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842756"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842683"><span class="hs-identifier hs-var">t1</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-294"></span><span>                                          </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842756"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842682"><span class="hs-identifier hs-var">t2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-295"></span><span>    </span><span class="annot"><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#TyConAppCo"><span class="hs-identifier hs-type">TyConAppCo</span></a></span><span> </span><span id="local-6989586621680842678"><span class="annot"><span class="annottext">Role
</span><a href="#local-6989586621680842678"><span class="hs-identifier hs-var">r</span></a></span></span><span> </span><span id="local-6989586621680842677"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842677"><span class="hs-identifier hs-var">tc</span></a></span></span><span> </span><span id="local-6989586621680842676"><span class="annot"><span class="annottext">[KindCoercion]
</span><a href="#local-6989586621680842676"><span class="hs-identifier hs-var">cos</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-296"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842677"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Unique -&gt; Bool
forall a. Uniquable a =&gt; a -&gt; Unique -&gt; Bool
</span><a href="GHC.Types.Unique.html#hasKey"><span class="hs-operator hs-var">`hasKey`</span></a></span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="GHC.Builtin.Names.html#funTyConKey"><span class="hs-identifier hs-var">funTyConKey</span></a></span><span>
</span><span id="line-297"></span><span>      </span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">KindCoercion
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">KindCoercion
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">KindCoercion
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span class="annot"><span class="annottext">KindCoercion
</span><span class="hs-identifier">_</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><span class="hs-identifier">_</span></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[KindCoercion]
</span><a href="#local-6989586621680842676"><span class="hs-identifier hs-var">cos</span></a></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; IfaceCoercion
forall a. HasCallStack =&gt; String -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;toIfaceCoercion&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-298"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                </span><span class="hs-glyph">=</span><span>
</span><span id="line-299"></span><span>        </span><span class="annot"><span class="annottext">Role -&gt; IfaceTyCon -&gt; [IfaceCoercion] -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceTyConAppCo"><span class="hs-identifier hs-var">IfaceTyConAppCo</span></a></span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="#local-6989586621680842678"><span class="hs-identifier hs-var">r</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; IfaceTyCon
</span><a href="GHC.CoreToIface.html#toIfaceTyCon"><span class="hs-identifier hs-var">toIfaceTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842677"><span class="hs-identifier hs-var">tc</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(KindCoercion -&gt; IfaceCoercion)
-&gt; [KindCoercion] -&gt; [IfaceCoercion]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">[KindCoercion]
</span><a href="#local-6989586621680842676"><span class="hs-identifier hs-var">cos</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-300"></span><span>    </span><span class="annot"><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#FunCo"><span class="hs-identifier hs-type">FunCo</span></a></span><span> </span><span id="local-6989586621680842669"><span class="annot"><span class="annottext">Role
</span><a href="#local-6989586621680842669"><span class="hs-identifier hs-var">r</span></a></span></span><span> </span><span id="local-6989586621680842668"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842668"><span class="hs-identifier hs-var">w</span></a></span></span><span> </span><span id="local-6989586621680842667"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842667"><span class="hs-identifier hs-var">co1</span></a></span></span><span> </span><span id="local-6989586621680842666"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842666"><span class="hs-identifier hs-var">co2</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Role
-&gt; IfaceCoercion -&gt; IfaceCoercion -&gt; IfaceCoercion -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceFunCo"><span class="hs-identifier hs-var">IfaceFunCo</span></a></span><span> </span><span class="annot"><span class="annottext">Role
</span><a href="#local-6989586621680842669"><span class="hs-identifier hs-var">r</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842668"><span class="hs-identifier hs-var">w</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842667"><span class="hs-identifier hs-var">co1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842666"><span class="hs-identifier hs-var">co2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-301"></span><span>
</span><span id="line-302"></span><span>    </span><span class="annot"><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#ForAllCo"><span class="hs-identifier hs-type">ForAllCo</span></a></span><span> </span><span id="local-6989586621680842663"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842663"><span class="hs-identifier hs-var">tv</span></a></span></span><span> </span><span id="local-6989586621680842662"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842662"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span id="local-6989586621680842661"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842661"><span class="hs-identifier hs-var">co</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceBndr -&gt; IfaceCoercion -&gt; IfaceCoercion -&gt; IfaceCoercion
</span><a href="GHC.Iface.Type.html#IfaceForAllCo"><span class="hs-identifier hs-var">IfaceForAllCo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; IfaceBndr
</span><a href="GHC.CoreToIface.html#toIfaceBndr"><span class="hs-identifier hs-var">toIfaceBndr</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842663"><span class="hs-identifier hs-var">tv</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-303"></span><span>                                          </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; KindCoercion -&gt; IfaceCoercion
</span><a href="GHC.CoreToIface.html#toIfaceCoercionX"><span class="hs-identifier hs-var">toIfaceCoercionX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842659"><span class="hs-identifier hs-var">fr'</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842662"><span class="hs-identifier hs-var">k</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-304"></span><span>                                          </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; KindCoercion -&gt; IfaceCoercion
</span><a href="GHC.CoreToIface.html#toIfaceCoercionX"><span class="hs-identifier hs-var">toIfaceCoercionX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842659"><span class="hs-identifier hs-var">fr'</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842661"><span class="hs-identifier hs-var">co</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-305"></span><span>                          </span><span class="hs-keyword">where</span><span>
</span><span id="line-306"></span><span>                            </span><span id="local-6989586621680842659"><span class="annot"><span class="annottext">fr' :: VarSet
</span><a href="#local-6989586621680842659"><span class="hs-identifier hs-var hs-var">fr'</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842756"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; CoVar -&gt; VarSet
</span><a href="GHC.Types.Var.Set.html#delVarSet"><span class="hs-operator hs-var">`delVarSet`</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842663"><span class="hs-identifier hs-var">tv</span></a></span><span>
</span><span id="line-307"></span><span>
</span><span id="line-308"></span><span>    </span><span class="annot"><a href="#local-6989586621680842680"><span class="hs-identifier hs-type">go_prov</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#UnivCoProvenance"><span class="hs-identifier hs-type">UnivCoProvenance</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceUnivCoProv"><span class="hs-identifier hs-type">IfaceUnivCoProv</span></a></span><span>
</span><span id="line-309"></span><span>    </span><span id="local-6989586621680842680"><span class="annot"><span class="annottext">go_prov :: UnivCoProvenance -&gt; IfaceUnivCoProv
</span><a href="#local-6989586621680842680"><span class="hs-identifier hs-var hs-var">go_prov</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#PhantomProv"><span class="hs-identifier hs-type">PhantomProv</span></a></span><span> </span><span id="local-6989586621680842657"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842657"><span class="hs-identifier hs-var">co</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceCoercion -&gt; IfaceUnivCoProv
</span><a href="GHC.Iface.Type.html#IfacePhantomProv"><span class="hs-identifier hs-var">IfacePhantomProv</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842657"><span class="hs-identifier hs-var">co</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-310"></span><span>    </span><span class="annot"><a href="#local-6989586621680842680"><span class="hs-identifier hs-var">go_prov</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#ProofIrrelProv"><span class="hs-identifier hs-type">ProofIrrelProv</span></a></span><span> </span><span id="local-6989586621680842654"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842654"><span class="hs-identifier hs-var">co</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceCoercion -&gt; IfaceUnivCoProv
</span><a href="GHC.Iface.Type.html#IfaceProofIrrelProv"><span class="hs-identifier hs-var">IfaceProofIrrelProv</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="#local-6989586621680842754"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842654"><span class="hs-identifier hs-var">co</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-311"></span><span>    </span><span class="annot"><a href="#local-6989586621680842680"><span class="hs-identifier hs-var">go_prov</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#PluginProv"><span class="hs-identifier hs-type">PluginProv</span></a></span><span> </span><span id="local-6989586621680842651"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621680842651"><span class="hs-identifier hs-var">str</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; IfaceUnivCoProv
</span><a href="GHC.Iface.Type.html#IfacePluginProv"><span class="hs-identifier hs-var">IfacePluginProv</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621680842651"><span class="hs-identifier hs-var">str</span></a></span><span>
</span><span id="line-312"></span><span>    </span><span class="annot"><a href="#local-6989586621680842680"><span class="hs-identifier hs-var">go_prov</span></a></span><span> </span><span class="annot"><span class="annottext">UnivCoProvenance
</span><a href="GHC.Core.TyCo.Rep.html#CorePrepProv"><span class="hs-identifier hs-var">CorePrepProv</span></a></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; IfaceUnivCoProv
forall a. HasCallStack =&gt; String -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;toIfaceCoercionX&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-313"></span><span>         </span><span class="hs-comment">-- CorePrepProv only happens after the iface file is generated</span><span>
</span><span id="line-314"></span><span>
</span><span id="line-315"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTcArgs"><span class="hs-identifier hs-type">toIfaceTcArgs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceAppArgs"><span class="hs-identifier hs-type">IfaceAppArgs</span></a></span><span>
</span><span id="line-316"></span><span id="toIfaceTcArgs"><span class="annot"><span class="annottext">toIfaceTcArgs :: TyCon -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="GHC.CoreToIface.html#toIfaceTcArgs"><span class="hs-identifier hs-var hs-var">toIfaceTcArgs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; TyCon -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="GHC.CoreToIface.html#toIfaceTcArgsX"><span class="hs-identifier hs-var">toIfaceTcArgsX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="GHC.Types.Var.Set.html#emptyVarSet"><span class="hs-identifier hs-var">emptyVarSet</span></a></span><span>
</span><span id="line-317"></span><span>
</span><span id="line-318"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTcArgsX"><span class="hs-identifier hs-type">toIfaceTcArgsX</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceAppArgs"><span class="hs-identifier hs-type">IfaceAppArgs</span></a></span><span>
</span><span id="line-319"></span><span id="toIfaceTcArgsX"><span class="annot"><span class="annottext">toIfaceTcArgsX :: VarSet -&gt; TyCon -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="GHC.CoreToIface.html#toIfaceTcArgsX"><span class="hs-identifier hs-var hs-var">toIfaceTcArgsX</span></a></span></span><span> </span><span id="local-6989586621680842648"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842648"><span class="hs-identifier hs-var">fr</span></a></span></span><span> </span><span id="local-6989586621680842647"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842647"><span class="hs-identifier hs-var">tc</span></a></span></span><span> </span><span id="local-6989586621680842646"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842646"><span class="hs-identifier hs-var">ty_args</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="GHC.CoreToIface.html#toIfaceAppArgsX"><span class="hs-identifier hs-var">toIfaceAppArgsX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842648"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; Type
</span><a href="GHC.Core.TyCon.html#tyConKind"><span class="hs-identifier hs-var hs-var">tyConKind</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842647"><span class="hs-identifier hs-var">tc</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842646"><span class="hs-identifier hs-var">ty_args</span></a></span><span>
</span><span id="line-320"></span><span>
</span><span id="line-321"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceAppTyArgsX"><span class="hs-identifier hs-type">toIfaceAppTyArgsX</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceAppArgs"><span class="hs-identifier hs-type">IfaceAppArgs</span></a></span><span>
</span><span id="line-322"></span><span id="toIfaceAppTyArgsX"><span class="annot"><span class="annottext">toIfaceAppTyArgsX :: VarSet -&gt; Type -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="GHC.CoreToIface.html#toIfaceAppTyArgsX"><span class="hs-identifier hs-var hs-var">toIfaceAppTyArgsX</span></a></span></span><span> </span><span id="local-6989586621680842643"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842643"><span class="hs-identifier hs-var">fr</span></a></span></span><span> </span><span id="local-6989586621680842642"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842642"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span id="local-6989586621680842641"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842641"><span class="hs-identifier hs-var">ty_args</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="GHC.CoreToIface.html#toIfaceAppArgsX"><span class="hs-identifier hs-var">toIfaceAppArgsX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842643"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; Type -&gt; Type
Type -&gt; Type
</span><a href="GHC.Core.Type.html#typeKind"><span class="hs-identifier hs-var">typeKind</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842642"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842641"><span class="hs-identifier hs-var">ty_args</span></a></span><span>
</span><span id="line-323"></span><span>
</span><span id="line-324"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceAppArgsX"><span class="hs-identifier hs-type">toIfaceAppArgsX</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Set.html#VarSet"><span class="hs-identifier hs-type">VarSet</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Kind"><span class="hs-identifier hs-type">Kind</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceAppArgs"><span class="hs-identifier hs-type">IfaceAppArgs</span></a></span><span>
</span><span id="line-325"></span><span class="hs-comment">-- See Note [Suppressing invisible arguments] in GHC.Iface.Type</span><span>
</span><span id="line-326"></span><span class="hs-comment">-- We produce a result list of args describing visibility</span><span>
</span><span id="line-327"></span><span class="hs-comment">-- The awkward case is</span><span>
</span><span id="line-328"></span><span class="hs-comment">--    T :: forall k. * -&gt; k</span><span>
</span><span id="line-329"></span><span class="hs-comment">-- And consider</span><span>
</span><span id="line-330"></span><span class="hs-comment">--    T (forall j. blah) * blib</span><span>
</span><span id="line-331"></span><span class="hs-comment">-- Is 'blib' visible?  It depends on the visibility flag on j,</span><span>
</span><span id="line-332"></span><span class="hs-comment">-- so we have to substitute for k.  Annoying!</span><span>
</span><span id="line-333"></span><span id="toIfaceAppArgsX"><span class="annot"><span class="annottext">toIfaceAppArgsX :: VarSet -&gt; Type -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="GHC.CoreToIface.html#toIfaceAppArgsX"><span class="hs-identifier hs-var hs-var">toIfaceAppArgsX</span></a></span></span><span> </span><span id="local-6989586621680842638"><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842638"><span class="hs-identifier hs-var">fr</span></a></span></span><span> </span><span id="local-6989586621680842637"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842637"><span class="hs-identifier hs-var">kind</span></a></span></span><span> </span><span id="local-6989586621680842636"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842636"><span class="hs-identifier hs-var">ty_args</span></a></span></span><span>
</span><span id="line-334"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TCvSubst -&gt; Type -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="#local-6989586621680842635"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">InScopeSet -&gt; TCvSubst
</span><a href="GHC.Core.TyCo.Subst.html#mkEmptyTCvSubst"><span class="hs-identifier hs-var">mkEmptyTCvSubst</span></a></span><span> </span><span class="annot"><span class="annottext">InScopeSet
</span><a href="#local-6989586621680842633"><span class="hs-identifier hs-var">in_scope</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842637"><span class="hs-identifier hs-var">kind</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842636"><span class="hs-identifier hs-var">ty_args</span></a></span><span>
</span><span id="line-335"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-336"></span><span>    </span><span id="local-6989586621680842633"><span class="annot"><span class="annottext">in_scope :: InScopeSet
</span><a href="#local-6989586621680842633"><span class="hs-identifier hs-var hs-var">in_scope</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; InScopeSet
</span><a href="GHC.Types.Var.Env.html#mkInScopeSet"><span class="hs-identifier hs-var">mkInScopeSet</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Type] -&gt; VarSet
</span><a href="GHC.Core.TyCo.FVs.html#tyCoVarsOfTypes"><span class="hs-identifier hs-var">tyCoVarsOfTypes</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842636"><span class="hs-identifier hs-var">ty_args</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-337"></span><span>
</span><span id="line-338"></span><span>    </span><span id="local-6989586621680842635"><span class="annot"><span class="annottext">go :: TCvSubst -&gt; Type -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="#local-6989586621680842635"><span class="hs-identifier hs-var hs-var">go</span></a></span></span><span> </span><span class="annot"><span class="annottext">TCvSubst
</span><span class="hs-identifier">_</span></span><span>   </span><span class="annot"><span class="annottext">Type
</span><span class="hs-identifier">_</span></span><span>                   </span><span class="hs-special">[</span><span class="hs-special">]</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceAppArgs
</span><a href="GHC.Iface.Type.html#IA_Nil"><span class="hs-identifier hs-var">IA_Nil</span></a></span><span>
</span><span id="line-339"></span><span>    </span><span class="annot"><a href="#local-6989586621680842635"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span id="local-6989586621680842621"><span class="annot"><span class="annottext">TCvSubst
</span><a href="#local-6989586621680842621"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span id="local-6989586621680842620"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842620"><span class="hs-identifier hs-var">ty</span></a></span></span><span>                  </span><span id="local-6989586621680842619"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842619"><span class="hs-identifier hs-var">ts</span></a></span></span><span>
</span><span id="line-340"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680842618"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842618"><span class="hs-identifier hs-var">ty'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Type -&gt; Maybe Type
</span><a href="GHC.Core.Type.html#coreView"><span class="hs-identifier hs-var">coreView</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842620"><span class="hs-identifier hs-var">ty</span></a></span><span>
</span><span id="line-341"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TCvSubst -&gt; Type -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="#local-6989586621680842635"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">TCvSubst
</span><a href="#local-6989586621680842621"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842618"><span class="hs-identifier hs-var">ty'</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842619"><span class="hs-identifier hs-var">ts</span></a></span><span>
</span><span id="line-342"></span><span>    </span><span class="annot"><a href="#local-6989586621680842635"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span id="local-6989586621680842616"><span class="annot"><span class="annottext">TCvSubst
</span><a href="#local-6989586621680842616"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#ForAllTy"><span class="hs-identifier hs-type">ForAllTy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Var.html#Bndr"><span class="hs-identifier hs-type">Bndr</span></a></span><span> </span><span id="local-6989586621680842615"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842615"><span class="hs-identifier hs-var">tv</span></a></span></span><span> </span><span id="local-6989586621680842614"><span class="annot"><span class="annottext">ArgFlag
</span><a href="#local-6989586621680842614"><span class="hs-identifier hs-var">vis</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680842613"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842613"><span class="hs-identifier hs-var">res</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680842612"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842612"><span class="hs-identifier hs-var">t</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span id="local-6989586621680842611"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842611"><span class="hs-identifier hs-var">ts</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-343"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceType -&gt; ArgFlag -&gt; IfaceAppArgs -&gt; IfaceAppArgs
</span><a href="GHC.Iface.Type.html#IA_Arg"><span class="hs-identifier hs-var">IA_Arg</span></a></span><span> </span><span class="annot"><span class="annottext">IfaceType
</span><a href="#local-6989586621680842609"><span class="hs-identifier hs-var">t'</span></a></span><span> </span><span class="annot"><span class="annottext">ArgFlag
</span><a href="#local-6989586621680842614"><span class="hs-identifier hs-var">vis</span></a></span><span> </span><span class="annot"><span class="annottext">IfaceAppArgs
</span><a href="#local-6989586621680842608"><span class="hs-identifier hs-var">ts'</span></a></span><span>
</span><span id="line-344"></span><span>      </span><span class="hs-keyword">where</span><span>
</span><span id="line-345"></span><span>        </span><span id="local-6989586621680842609"><span class="annot"><span class="annottext">t' :: IfaceType
</span><a href="#local-6989586621680842609"><span class="hs-identifier hs-var hs-var">t'</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842638"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842612"><span class="hs-identifier hs-var">t</span></a></span><span>
</span><span id="line-346"></span><span>        </span><span id="local-6989586621680842608"><span class="annot"><span class="annottext">ts' :: IfaceAppArgs
</span><a href="#local-6989586621680842608"><span class="hs-identifier hs-var hs-var">ts'</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TCvSubst -&gt; Type -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="#local-6989586621680842635"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TCvSubst -&gt; CoVar -&gt; Type -&gt; TCvSubst
</span><a href="GHC.Core.TyCo.Subst.html#extendTCvSubst"><span class="hs-identifier hs-var">extendTCvSubst</span></a></span><span> </span><span class="annot"><span class="annottext">TCvSubst
</span><a href="#local-6989586621680842616"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842615"><span class="hs-identifier hs-var">tv</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842612"><span class="hs-identifier hs-var">t</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842613"><span class="hs-identifier hs-var">res</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842611"><span class="hs-identifier hs-var">ts</span></a></span><span>
</span><span id="line-347"></span><span>
</span><span id="line-348"></span><span>    </span><span class="annot"><a href="#local-6989586621680842635"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span id="local-6989586621680842606"><span class="annot"><span class="annottext">TCvSubst
</span><a href="#local-6989586621680842606"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#FunTy"><span class="hs-identifier hs-type">FunTy</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">ft_af :: Type -&gt; AnonArgFlag
</span><a href="GHC.Core.TyCo.Rep.html#ft_af"><span class="hs-identifier hs-var">ft_af</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680842605"><span class="annot"><span class="annottext">AnonArgFlag
</span><a href="#local-6989586621680842605"><span class="hs-identifier hs-var">af</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ft_res :: Type -&gt; Type
</span><a href="GHC.Core.TyCo.Rep.html#ft_res"><span class="hs-identifier hs-var">ft_res</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680842604"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842604"><span class="hs-identifier hs-var">res</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680842603"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842603"><span class="hs-identifier hs-var">t</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span id="local-6989586621680842602"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842602"><span class="hs-identifier hs-var">ts</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-349"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceType -&gt; ArgFlag -&gt; IfaceAppArgs -&gt; IfaceAppArgs
</span><a href="GHC.Iface.Type.html#IA_Arg"><span class="hs-identifier hs-var">IA_Arg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842638"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842603"><span class="hs-identifier hs-var">t</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">ArgFlag
</span><a href="#local-6989586621680842601"><span class="hs-identifier hs-var">argf</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TCvSubst -&gt; Type -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="#local-6989586621680842635"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">TCvSubst
</span><a href="#local-6989586621680842606"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842604"><span class="hs-identifier hs-var">res</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842602"><span class="hs-identifier hs-var">ts</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-350"></span><span>      </span><span class="hs-keyword">where</span><span>
</span><span id="line-351"></span><span>        </span><span id="local-6989586621680842601"><span class="annot"><span class="annottext">argf :: ArgFlag
</span><a href="#local-6989586621680842601"><span class="hs-identifier hs-var hs-var">argf</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">AnonArgFlag
</span><a href="#local-6989586621680842605"><span class="hs-identifier hs-var">af</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-352"></span><span>                 </span><span class="annot"><span class="annottext">AnonArgFlag
</span><a href="GHC.Types.Var.html#VisArg"><span class="hs-identifier hs-var">VisArg</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">ArgFlag
</span><a href="GHC.Types.Var.html#Required"><span class="hs-identifier hs-var">Required</span></a></span><span>
</span><span id="line-353"></span><span>                 </span><span class="annot"><span class="annottext">AnonArgFlag
</span><a href="GHC.Types.Var.html#InvisArg"><span class="hs-identifier hs-var">InvisArg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">ArgFlag
</span><a href="GHC.Types.Var.html#Inferred"><span class="hs-identifier hs-var">Inferred</span></a></span><span>
</span><span id="line-354"></span><span>                   </span><span class="hs-comment">-- It's rare for a kind to have a constraint argument, but</span><span>
</span><span id="line-355"></span><span>                   </span><span class="hs-comment">-- it can happen. See Note [AnonTCB InvisArg] in GHC.Core.TyCon.</span><span>
</span><span id="line-356"></span><span>
</span><span id="line-357"></span><span>    </span><span class="annot"><a href="#local-6989586621680842635"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span id="local-6989586621680842596"><span class="annot"><span class="annottext">TCvSubst
</span><a href="#local-6989586621680842596"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span id="local-6989586621680842595"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842595"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span id="local-6989586621680842594"><span class="annot"><span class="annottext">ts :: [Type]
</span><a href="#local-6989586621680842594"><span class="hs-identifier hs-var">ts</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span id="local-6989586621680842593"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842593"><span class="hs-identifier hs-var">t1</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span id="local-6989586621680842592"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842592"><span class="hs-identifier hs-var">ts1</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-358"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TCvSubst -&gt; Bool
</span><a href="GHC.Core.TyCo.Subst.html#isEmptyTCvSubst"><span class="hs-identifier hs-var">isEmptyTCvSubst</span></a></span><span> </span><span class="annot"><span class="annottext">TCvSubst
</span><a href="#local-6989586621680842596"><span class="hs-identifier hs-var">env</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-359"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TCvSubst -&gt; Type -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="#local-6989586621680842635"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TCvSubst -&gt; TCvSubst
</span><a href="GHC.Core.TyCo.Subst.html#zapTCvSubst"><span class="hs-identifier hs-var">zapTCvSubst</span></a></span><span> </span><span class="annot"><span class="annottext">TCvSubst
</span><a href="#local-6989586621680842596"><span class="hs-identifier hs-var">env</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">HasCallStack =&gt; TCvSubst -&gt; Type -&gt; Type
TCvSubst -&gt; Type -&gt; Type
</span><a href="GHC.Core.TyCo.Subst.html#substTy"><span class="hs-identifier hs-var">substTy</span></a></span><span> </span><span class="annot"><span class="annottext">TCvSubst
</span><a href="#local-6989586621680842596"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842595"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842594"><span class="hs-identifier hs-var">ts</span></a></span><span>
</span><span id="line-360"></span><span>        </span><span class="hs-comment">-- See Note [Care with kind instantiation] in GHC.Core.Type</span><span>
</span><span id="line-361"></span><span>
</span><span id="line-362"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-363"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="hs-comment">-- There's a kind error in the type we are trying to print</span><span>
</span><span id="line-364"></span><span>        </span><span class="hs-comment">-- e.g. kind = k, ty_args = [Int]</span><span>
</span><span id="line-365"></span><span>        </span><span class="hs-comment">-- This is probably a compiler bug, so we print a trace and</span><span>
</span><span id="line-366"></span><span>        </span><span class="hs-comment">-- carry on as if it were FunTy.  Without the test for</span><span>
</span><span id="line-367"></span><span>        </span><span class="hs-comment">-- isEmptyTCvSubst we'd get an infinite loop (#15473)</span><span>
</span><span id="line-368"></span><span>        </span><span class="hs-identifier">WARN</span><span class="hs-special">(</span><span> </span><span class="hs-identifier">True</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">ppr</span><span> </span><span class="hs-identifier">kind</span><span> </span><span class="hs-operator">$$</span><span> </span><span class="hs-identifier">ppr</span><span> </span><span class="hs-identifier">ty_args</span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-369"></span><span>        </span><span class="annot"><span class="annottext">IfaceType -&gt; ArgFlag -&gt; IfaceAppArgs -&gt; IfaceAppArgs
</span><a href="GHC.Iface.Type.html#IA_Arg"><span class="hs-identifier hs-var">IA_Arg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">VarSet -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceTypeX"><span class="hs-identifier hs-var">toIfaceTypeX</span></a></span><span> </span><span class="annot"><span class="annottext">VarSet
</span><a href="#local-6989586621680842638"><span class="hs-identifier hs-var">fr</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842593"><span class="hs-identifier hs-var">t1</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">ArgFlag
</span><a href="GHC.Types.Var.html#Required"><span class="hs-identifier hs-var">Required</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TCvSubst -&gt; Type -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="#local-6989586621680842635"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">TCvSubst
</span><a href="#local-6989586621680842596"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842595"><span class="hs-identifier hs-var">ty</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842592"><span class="hs-identifier hs-var">ts1</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-370"></span><span>
</span><span id="line-371"></span><span class="annot"><a href="GHC.CoreToIface.html#tidyToIfaceType"><span class="hs-identifier hs-type">tidyToIfaceType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Env.html#TidyEnv"><span class="hs-identifier hs-type">TidyEnv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceType"><span class="hs-identifier hs-type">IfaceType</span></a></span><span>
</span><span id="line-372"></span><span id="tidyToIfaceType"><span class="annot"><span class="annottext">tidyToIfaceType :: TidyEnv -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#tidyToIfaceType"><span class="hs-identifier hs-var hs-var">tidyToIfaceType</span></a></span></span><span> </span><span id="local-6989586621680842584"><span class="annot"><span class="annottext">TidyEnv
</span><a href="#local-6989586621680842584"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span id="local-6989586621680842583"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842583"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceType"><span class="hs-identifier hs-var">toIfaceType</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TidyEnv -&gt; Type -&gt; Type
</span><a href="GHC.Core.TyCo.Tidy.html#tidyType"><span class="hs-identifier hs-var">tidyType</span></a></span><span> </span><span class="annot"><span class="annottext">TidyEnv
</span><a href="#local-6989586621680842584"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842583"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-373"></span><span>
</span><span id="line-374"></span><span class="annot"><a href="GHC.CoreToIface.html#tidyToIfaceTcArgs"><span class="hs-identifier hs-type">tidyToIfaceTcArgs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Env.html#TidyEnv"><span class="hs-identifier hs-type">TidyEnv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceAppArgs"><span class="hs-identifier hs-type">IfaceAppArgs</span></a></span><span>
</span><span id="line-375"></span><span id="tidyToIfaceTcArgs"><span class="annot"><span class="annottext">tidyToIfaceTcArgs :: TidyEnv -&gt; TyCon -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="GHC.CoreToIface.html#tidyToIfaceTcArgs"><span class="hs-identifier hs-var hs-var">tidyToIfaceTcArgs</span></a></span></span><span> </span><span id="local-6989586621680842581"><span class="annot"><span class="annottext">TidyEnv
</span><a href="#local-6989586621680842581"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span id="local-6989586621680842580"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842580"><span class="hs-identifier hs-var">tc</span></a></span></span><span> </span><span id="local-6989586621680842579"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842579"><span class="hs-identifier hs-var">tys</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [Type] -&gt; IfaceAppArgs
</span><a href="GHC.CoreToIface.html#toIfaceTcArgs"><span class="hs-identifier hs-var">toIfaceTcArgs</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842580"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TidyEnv -&gt; [Type] -&gt; [Type]
</span><a href="GHC.Core.TyCo.Tidy.html#tidyTypes"><span class="hs-identifier hs-var">tidyTypes</span></a></span><span> </span><span class="annot"><span class="annottext">TidyEnv
</span><a href="#local-6989586621680842581"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842579"><span class="hs-identifier hs-var">tys</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-376"></span><span>
</span><span id="line-377"></span><span class="annot"><a href="GHC.CoreToIface.html#tidyToIfaceContext"><span class="hs-identifier hs-type">tidyToIfaceContext</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Env.html#TidyEnv"><span class="hs-identifier hs-type">TidyEnv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#ThetaType"><span class="hs-identifier hs-type">ThetaType</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceContext"><span class="hs-identifier hs-type">IfaceContext</span></a></span><span>
</span><span id="line-378"></span><span id="tidyToIfaceContext"><span class="annot"><span class="annottext">tidyToIfaceContext :: TidyEnv -&gt; [Type] -&gt; IfaceContext
</span><a href="GHC.CoreToIface.html#tidyToIfaceContext"><span class="hs-identifier hs-var hs-var">tidyToIfaceContext</span></a></span></span><span> </span><span id="local-6989586621680842576"><span class="annot"><span class="annottext">TidyEnv
</span><a href="#local-6989586621680842576"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span id="local-6989586621680842575"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842575"><span class="hs-identifier hs-var">theta</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Type -&gt; IfaceType) -&gt; [Type] -&gt; IfaceContext
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TidyEnv -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#tidyToIfaceType"><span class="hs-identifier hs-var">tidyToIfaceType</span></a></span><span> </span><span class="annot"><span class="annottext">TidyEnv
</span><a href="#local-6989586621680842576"><span class="hs-identifier hs-var">env</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842575"><span class="hs-identifier hs-var">theta</span></a></span><span>
</span><span id="line-379"></span><span>
</span><span id="line-380"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
        Conversion of pattern synonyms
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-387"></span><span>
</span><span id="line-388"></span><span class="annot"><a href="GHC.CoreToIface.html#patSynToIfaceDecl"><span class="hs-identifier hs-type">patSynToIfaceDecl</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.PatSyn.html#PatSyn"><span class="hs-identifier hs-type">PatSyn</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceDecl"><span class="hs-identifier hs-type">IfaceDecl</span></a></span><span>
</span><span id="line-389"></span><span id="patSynToIfaceDecl"><span class="annot"><span class="annottext">patSynToIfaceDecl :: PatSyn -&gt; IfaceDecl
</span><a href="GHC.CoreToIface.html#patSynToIfaceDecl"><span class="hs-identifier hs-var hs-var">patSynToIfaceDecl</span></a></span></span><span> </span><span id="local-6989586621680842574"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680842574"><span class="hs-identifier hs-var">ps</span></a></span></span><span>
</span><span id="line-390"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfacePatSyn :: Name
-&gt; Bool
-&gt; (Name, Bool)
-&gt; Maybe (Name, Bool)
-&gt; [IfaceForAllSpecBndr]
-&gt; [IfaceForAllSpecBndr]
-&gt; IfaceContext
-&gt; IfaceContext
-&gt; IfaceContext
-&gt; IfaceType
-&gt; [FieldLabel]
-&gt; IfaceDecl
</span><a href="GHC.Iface.Syntax.html#IfacePatSyn"><span class="hs-identifier hs-type">IfacePatSyn</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">ifName :: Name
</span><a href="GHC.Iface.Syntax.html#ifName"><span class="hs-identifier hs-var">ifName</span></a></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; Name
forall a. NamedThing a =&gt; a -&gt; Name
</span><a href="GHC.Types.Name.html#getName"><span class="hs-identifier hs-var">getName</span></a></span><span> </span><span class="annot"><span class="annottext">(PatSyn -&gt; Name) -&gt; PatSyn -&gt; Name
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680842574"><span class="hs-identifier hs-var">ps</span></a></span><span>
</span><span id="line-391"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ifPatMatcher :: (Name, Bool)
</span><a href="GHC.Iface.Syntax.html#ifPatMatcher"><span class="hs-identifier hs-var">ifPatMatcher</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CoVar, Bool) -&gt; (Name, Bool)
forall {b}. (CoVar, b) -&gt; (Name, b)
</span><a href="#local-6989586621680842569"><span class="hs-identifier hs-var">to_if_pr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">PatSyn -&gt; (CoVar, Bool)
</span><a href="GHC.Core.PatSyn.html#patSynMatcher"><span class="hs-identifier hs-var">patSynMatcher</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680842574"><span class="hs-identifier hs-var">ps</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-392"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ifPatBuilder :: Maybe (Name, Bool)
</span><a href="GHC.Iface.Syntax.html#ifPatBuilder"><span class="hs-identifier hs-var">ifPatBuilder</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">((CoVar, Bool) -&gt; (Name, Bool))
-&gt; Maybe (CoVar, Bool) -&gt; Maybe (Name, Bool)
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/GHC.Base.html#fmap"><span class="hs-identifier hs-var">fmap</span></a></span><span> </span><span class="annot"><span class="annottext">(CoVar, Bool) -&gt; (Name, Bool)
forall {b}. (CoVar, b) -&gt; (Name, b)
</span><a href="#local-6989586621680842569"><span class="hs-identifier hs-var">to_if_pr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">PatSyn -&gt; Maybe (CoVar, Bool)
</span><a href="GHC.Core.PatSyn.html#patSynBuilder"><span class="hs-identifier hs-var">patSynBuilder</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680842574"><span class="hs-identifier hs-var">ps</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-393"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ifPatIsInfix :: Bool
</span><a href="GHC.Iface.Syntax.html#ifPatIsInfix"><span class="hs-identifier hs-var">ifPatIsInfix</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; Bool
</span><a href="GHC.Core.PatSyn.html#patSynIsInfix"><span class="hs-identifier hs-var">patSynIsInfix</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680842574"><span class="hs-identifier hs-var">ps</span></a></span><span>
</span><span id="line-394"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ifPatUnivBndrs :: [IfaceForAllSpecBndr]
</span><a href="GHC.Iface.Syntax.html#ifPatUnivBndrs"><span class="hs-identifier hs-var">ifPatUnivBndrs</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(VarBndr CoVar Specificity -&gt; IfaceForAllSpecBndr)
-&gt; [VarBndr CoVar Specificity] -&gt; [IfaceForAllSpecBndr]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">VarBndr CoVar Specificity -&gt; IfaceForAllSpecBndr
forall vis. VarBndr CoVar vis -&gt; VarBndr IfaceBndr vis
</span><a href="GHC.CoreToIface.html#toIfaceForAllBndr"><span class="hs-identifier hs-var">toIfaceForAllBndr</span></a></span><span> </span><span class="annot"><span class="annottext">[VarBndr CoVar Specificity]
</span><a href="#local-6989586621680842562"><span class="hs-identifier hs-var">univ_bndrs'</span></a></span><span>
</span><span id="line-395"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ifPatExBndrs :: [IfaceForAllSpecBndr]
</span><a href="GHC.Iface.Syntax.html#ifPatExBndrs"><span class="hs-identifier hs-var">ifPatExBndrs</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(VarBndr CoVar Specificity -&gt; IfaceForAllSpecBndr)
-&gt; [VarBndr CoVar Specificity] -&gt; [IfaceForAllSpecBndr]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">VarBndr CoVar Specificity -&gt; IfaceForAllSpecBndr
forall vis. VarBndr CoVar vis -&gt; VarBndr IfaceBndr vis
</span><a href="GHC.CoreToIface.html#toIfaceForAllBndr"><span class="hs-identifier hs-var">toIfaceForAllBndr</span></a></span><span> </span><span class="annot"><span class="annottext">[VarBndr CoVar Specificity]
</span><a href="#local-6989586621680842560"><span class="hs-identifier hs-var">ex_bndrs'</span></a></span><span>
</span><span id="line-396"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ifPatProvCtxt :: IfaceContext
</span><a href="GHC.Iface.Syntax.html#ifPatProvCtxt"><span class="hs-identifier hs-var">ifPatProvCtxt</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TidyEnv -&gt; [Type] -&gt; IfaceContext
</span><a href="GHC.CoreToIface.html#tidyToIfaceContext"><span class="hs-identifier hs-var">tidyToIfaceContext</span></a></span><span> </span><span class="annot"><span class="annottext">TidyEnv
</span><a href="#local-6989586621680842558"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842557"><span class="hs-identifier hs-var">prov_theta</span></a></span><span>
</span><span id="line-397"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ifPatReqCtxt :: IfaceContext
</span><a href="GHC.Iface.Syntax.html#ifPatReqCtxt"><span class="hs-identifier hs-var">ifPatReqCtxt</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TidyEnv -&gt; [Type] -&gt; IfaceContext
</span><a href="GHC.CoreToIface.html#tidyToIfaceContext"><span class="hs-identifier hs-var">tidyToIfaceContext</span></a></span><span> </span><span class="annot"><span class="annottext">TidyEnv
</span><a href="#local-6989586621680842558"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842555"><span class="hs-identifier hs-var">req_theta</span></a></span><span>
</span><span id="line-398"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ifPatArgs :: IfaceContext
</span><a href="GHC.Iface.Syntax.html#ifPatArgs"><span class="hs-identifier hs-var">ifPatArgs</span></a></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Scaled Type -&gt; IfaceType) -&gt; [Scaled Type] -&gt; IfaceContext
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TidyEnv -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#tidyToIfaceType"><span class="hs-identifier hs-var">tidyToIfaceType</span></a></span><span> </span><span class="annot"><span class="annottext">TidyEnv
</span><a href="#local-6989586621680842558"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="annot"><span class="annottext">(Type -&gt; IfaceType)
-&gt; (Scaled Type -&gt; Type) -&gt; Scaled Type -&gt; IfaceType
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">Scaled Type -&gt; Type
forall a. Scaled a -&gt; a
</span><a href="GHC.Core.TyCo.Rep.html#scaledThing"><span class="hs-identifier hs-var">scaledThing</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[Scaled Type]
</span><a href="#local-6989586621680842552"><span class="hs-identifier hs-var">args</span></a></span><span>
</span><span id="line-399"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ifPatTy :: IfaceType
</span><a href="GHC.Iface.Syntax.html#ifPatTy"><span class="hs-identifier hs-var">ifPatTy</span></a></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TidyEnv -&gt; Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#tidyToIfaceType"><span class="hs-identifier hs-var">tidyToIfaceType</span></a></span><span> </span><span class="annot"><span class="annottext">TidyEnv
</span><a href="#local-6989586621680842558"><span class="hs-identifier hs-var">env2</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842550"><span class="hs-identifier hs-var">rhs_ty</span></a></span><span>
</span><span id="line-400"></span><span>                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ifFieldLabels :: [FieldLabel]
</span><a href="GHC.Iface.Syntax.html#ifFieldLabels"><span class="hs-identifier hs-var">ifFieldLabels</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">PatSyn -&gt; [FieldLabel]
</span><a href="GHC.Core.PatSyn.html#patSynFieldLabels"><span class="hs-identifier hs-var">patSynFieldLabels</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680842574"><span class="hs-identifier hs-var">ps</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-401"></span><span>                </span><span class="hs-special">}</span><span>
</span><span id="line-402"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-403"></span><span>    </span><span class="hs-special">(</span><span id="local-6989586621680842547"><span class="annot"><span class="annottext">[CoVar]
</span><a href="#local-6989586621680842547"><span class="hs-identifier hs-var">_univ_tvs</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680842555"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842555"><span class="hs-identifier hs-var">req_theta</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680842546"><span class="annot"><span class="annottext">[CoVar]
</span><a href="#local-6989586621680842546"><span class="hs-identifier hs-var">_ex_tvs</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680842557"><span class="annot"><span class="annottext">[Type]
</span><a href="#local-6989586621680842557"><span class="hs-identifier hs-var">prov_theta</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680842552"><span class="annot"><span class="annottext">[Scaled Type]
</span><a href="#local-6989586621680842552"><span class="hs-identifier hs-var">args</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680842550"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842550"><span class="hs-identifier hs-var">rhs_ty</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; ([CoVar], [Type], [CoVar], [Type], [Scaled Type], Type)
</span><a href="GHC.Core.PatSyn.html#patSynSig"><span class="hs-identifier hs-var">patSynSig</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680842574"><span class="hs-identifier hs-var">ps</span></a></span><span>
</span><span id="line-404"></span><span>    </span><span id="local-6989586621680842544"><span class="annot"><span class="annottext">univ_bndrs :: [VarBndr CoVar Specificity]
</span><a href="#local-6989586621680842544"><span class="hs-identifier hs-var hs-var">univ_bndrs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; [VarBndr CoVar Specificity]
</span><a href="GHC.Core.PatSyn.html#patSynUnivTyVarBinders"><span class="hs-identifier hs-var">patSynUnivTyVarBinders</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680842574"><span class="hs-identifier hs-var">ps</span></a></span><span>
</span><span id="line-405"></span><span>    </span><span id="local-6989586621680842542"><span class="annot"><span class="annottext">ex_bndrs :: [VarBndr CoVar Specificity]
</span><a href="#local-6989586621680842542"><span class="hs-identifier hs-var hs-var">ex_bndrs</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; [VarBndr CoVar Specificity]
</span><a href="GHC.Core.PatSyn.html#patSynExTyVarBinders"><span class="hs-identifier hs-var">patSynExTyVarBinders</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680842574"><span class="hs-identifier hs-var">ps</span></a></span><span>
</span><span id="line-406"></span><span>    </span><span class="hs-special">(</span><span id="local-6989586621680842540"><span class="annot"><span class="annottext">TidyEnv
</span><a href="#local-6989586621680842540"><span class="hs-identifier hs-var">env1</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680842562"><span class="annot"><span class="annottext">[VarBndr CoVar Specificity]
</span><a href="#local-6989586621680842562"><span class="hs-identifier hs-var">univ_bndrs'</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TidyEnv
-&gt; [VarBndr CoVar Specificity]
-&gt; (TidyEnv, [VarBndr CoVar Specificity])
forall vis.
TidyEnv -&gt; [VarBndr CoVar vis] -&gt; (TidyEnv, [VarBndr CoVar vis])
</span><a href="GHC.Core.TyCo.Tidy.html#tidyTyCoVarBinders"><span class="hs-identifier hs-var">tidyTyCoVarBinders</span></a></span><span> </span><span class="annot"><span class="annottext">TidyEnv
</span><a href="GHC.Types.Var.Env.html#emptyTidyEnv"><span class="hs-identifier hs-var">emptyTidyEnv</span></a></span><span> </span><span class="annot"><span class="annottext">[VarBndr CoVar Specificity]
</span><a href="#local-6989586621680842544"><span class="hs-identifier hs-var">univ_bndrs</span></a></span><span>
</span><span id="line-407"></span><span>    </span><span class="hs-special">(</span><span id="local-6989586621680842558"><span class="annot"><span class="annottext">TidyEnv
</span><a href="#local-6989586621680842558"><span class="hs-identifier hs-var">env2</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680842560"><span class="annot"><span class="annottext">[VarBndr CoVar Specificity]
</span><a href="#local-6989586621680842560"><span class="hs-identifier hs-var">ex_bndrs'</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TidyEnv
-&gt; [VarBndr CoVar Specificity]
-&gt; (TidyEnv, [VarBndr CoVar Specificity])
forall vis.
TidyEnv -&gt; [VarBndr CoVar vis] -&gt; (TidyEnv, [VarBndr CoVar vis])
</span><a href="GHC.Core.TyCo.Tidy.html#tidyTyCoVarBinders"><span class="hs-identifier hs-var">tidyTyCoVarBinders</span></a></span><span> </span><span class="annot"><span class="annottext">TidyEnv
</span><a href="#local-6989586621680842540"><span class="hs-identifier hs-var">env1</span></a></span><span> </span><span class="annot"><span class="annottext">[VarBndr CoVar Specificity]
</span><a href="#local-6989586621680842542"><span class="hs-identifier hs-var">ex_bndrs</span></a></span><span>
</span><span id="line-408"></span><span>    </span><span id="local-6989586621680842569"><span class="annot"><span class="annottext">to_if_pr :: (CoVar, b) -&gt; (Name, b)
</span><a href="#local-6989586621680842569"><span class="hs-identifier hs-var hs-var">to_if_pr</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621680842537"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842537"><span class="hs-identifier hs-var">id</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680842536"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680842536"><span class="hs-identifier hs-var">needs_dummy</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; Name
</span><a href="GHC.Types.Id.html#idName"><span class="hs-identifier hs-var">idName</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842537"><span class="hs-identifier hs-var">id</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680842536"><span class="hs-identifier hs-var">needs_dummy</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-409"></span><span>
</span><span id="line-410"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
        Conversion of other things
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-417"></span><span>
</span><span id="line-418"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceBang"><span class="hs-identifier hs-type">toIfaceBang</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.Env.html#TidyEnv"><span class="hs-identifier hs-type">TidyEnv</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#HsImplBang"><span class="hs-identifier hs-type">HsImplBang</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceBang"><span class="hs-identifier hs-type">IfaceBang</span></a></span><span>
</span><span id="line-419"></span><span id="toIfaceBang"><span class="annot"><span class="annottext">toIfaceBang :: TidyEnv -&gt; HsImplBang -&gt; IfaceBang
</span><a href="GHC.CoreToIface.html#toIfaceBang"><span class="hs-identifier hs-var hs-var">toIfaceBang</span></a></span></span><span> </span><span class="annot"><span class="annottext">TidyEnv
</span><span class="hs-identifier">_</span></span><span>    </span><span class="annot"><span class="annottext">HsImplBang
</span><a href="GHC.Core.DataCon.html#HsLazy"><span class="hs-identifier hs-var">HsLazy</span></a></span><span>              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceBang
</span><a href="GHC.Iface.Syntax.html#IfNoBang"><span class="hs-identifier hs-var">IfNoBang</span></a></span><span>
</span><span id="line-420"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceBang"><span class="hs-identifier hs-var">toIfaceBang</span></a></span><span> </span><span class="annot"><span class="annottext">TidyEnv
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.DataCon.html#HsUnpack"><span class="hs-identifier hs-type">HsUnpack</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe KindCoercion
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceBang
</span><a href="GHC.Iface.Syntax.html#IfUnpack"><span class="hs-identifier hs-var">IfUnpack</span></a></span><span>
</span><span id="line-421"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceBang"><span class="hs-identifier hs-var">toIfaceBang</span></a></span><span> </span><span id="local-6989586621680842530"><span class="annot"><span class="annottext">TidyEnv
</span><a href="#local-6989586621680842530"><span class="hs-identifier hs-var">env</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.DataCon.html#HsUnpack"><span class="hs-identifier hs-type">HsUnpack</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680842529"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842529"><span class="hs-identifier hs-var">co</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceCoercion -&gt; IfaceBang
</span><a href="GHC.Iface.Syntax.html#IfUnpackCo"><span class="hs-identifier hs-var">IfUnpackCo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="GHC.CoreToIface.html#toIfaceCoercion"><span class="hs-identifier hs-var">toIfaceCoercion</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TidyEnv -&gt; KindCoercion -&gt; KindCoercion
</span><a href="GHC.Core.TyCo.Tidy.html#tidyCo"><span class="hs-identifier hs-var">tidyCo</span></a></span><span> </span><span class="annot"><span class="annottext">TidyEnv
</span><a href="#local-6989586621680842530"><span class="hs-identifier hs-var">env</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842529"><span class="hs-identifier hs-var">co</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-422"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceBang"><span class="hs-identifier hs-var">toIfaceBang</span></a></span><span> </span><span class="annot"><span class="annottext">TidyEnv
</span><span class="hs-identifier">_</span></span><span>   </span><span class="annot"><span class="annottext">HsImplBang
</span><a href="GHC.Core.DataCon.html#HsStrict"><span class="hs-identifier hs-var">HsStrict</span></a></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceBang
</span><a href="GHC.Iface.Syntax.html#IfStrict"><span class="hs-identifier hs-var">IfStrict</span></a></span><span>
</span><span id="line-423"></span><span>
</span><span id="line-424"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceSrcBang"><span class="hs-identifier hs-type">toIfaceSrcBang</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#HsSrcBang"><span class="hs-identifier hs-type">HsSrcBang</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceSrcBang"><span class="hs-identifier hs-type">IfaceSrcBang</span></a></span><span>
</span><span id="line-425"></span><span id="toIfaceSrcBang"><span class="annot"><span class="annottext">toIfaceSrcBang :: HsSrcBang -&gt; IfaceSrcBang
</span><a href="GHC.CoreToIface.html#toIfaceSrcBang"><span class="hs-identifier hs-var hs-var">toIfaceSrcBang</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.DataCon.html#HsSrcBang"><span class="hs-identifier hs-type">HsSrcBang</span></a></span><span> </span><span class="annot"><span class="annottext">SourceText
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680842524"><span class="annot"><span class="annottext">SrcUnpackedness
</span><a href="#local-6989586621680842524"><span class="hs-identifier hs-var">unpk</span></a></span></span><span> </span><span id="local-6989586621680842523"><span class="annot"><span class="annottext">SrcStrictness
</span><a href="#local-6989586621680842523"><span class="hs-identifier hs-var">bang</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SrcUnpackedness -&gt; SrcStrictness -&gt; IfaceSrcBang
</span><a href="GHC.Iface.Syntax.html#IfSrcBang"><span class="hs-identifier hs-var">IfSrcBang</span></a></span><span> </span><span class="annot"><span class="annottext">SrcUnpackedness
</span><a href="#local-6989586621680842524"><span class="hs-identifier hs-var">unpk</span></a></span><span> </span><span class="annot"><span class="annottext">SrcStrictness
</span><a href="#local-6989586621680842523"><span class="hs-identifier hs-var">bang</span></a></span><span>
</span><span id="line-426"></span><span>
</span><span id="line-427"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceLetBndr"><span class="hs-identifier hs-type">toIfaceLetBndr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceLetBndr"><span class="hs-identifier hs-type">IfaceLetBndr</span></a></span><span>
</span><span id="line-428"></span><span id="toIfaceLetBndr"><span class="annot"><span class="annottext">toIfaceLetBndr :: CoVar -&gt; IfaceLetBndr
</span><a href="GHC.CoreToIface.html#toIfaceLetBndr"><span class="hs-identifier hs-var hs-var">toIfaceLetBndr</span></a></span></span><span> </span><span id="local-6989586621680842521"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842521"><span class="hs-identifier hs-var">id</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString
-&gt; IfaceType -&gt; IfaceIdInfo -&gt; IfaceJoinInfo -&gt; IfaceLetBndr
</span><a href="GHC.Iface.Syntax.html#IfLetBndr"><span class="hs-identifier hs-var">IfLetBndr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">OccName -&gt; FastString
</span><a href="GHC.Types.Name.Occurrence.html#occNameFS"><span class="hs-identifier hs-var hs-var">occNameFS</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; OccName
forall a. NamedThing a =&gt; a -&gt; OccName
</span><a href="GHC.Types.Name.html#getOccName"><span class="hs-identifier hs-var">getOccName</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842521"><span class="hs-identifier hs-var">id</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-429"></span><span>                               </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceType"><span class="hs-identifier hs-var">toIfaceType</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; Type
</span><a href="GHC.Types.Id.html#idType"><span class="hs-identifier hs-var">idType</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842521"><span class="hs-identifier hs-var">id</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-430"></span><span>                               </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo -&gt; IfaceIdInfo
</span><a href="GHC.CoreToIface.html#toIfaceIdInfo"><span class="hs-identifier hs-var">toIfaceIdInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; CoVar -&gt; IdInfo
CoVar -&gt; IdInfo
</span><a href="GHC.Types.Var.html#idInfo"><span class="hs-identifier hs-var">idInfo</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842521"><span class="hs-identifier hs-var">id</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-431"></span><span>                               </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe Int -&gt; IfaceJoinInfo
</span><a href="GHC.CoreToIface.html#toIfaceJoinInfo"><span class="hs-identifier hs-var">toIfaceJoinInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; Maybe Int
</span><a href="GHC.Types.Id.html#isJoinId_maybe"><span class="hs-identifier hs-var">isJoinId_maybe</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842521"><span class="hs-identifier hs-var">id</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-432"></span><span>  </span><span class="hs-comment">-- Put into the interface file any IdInfo that GHC.Core.Tidy.tidyLetBndr</span><span>
</span><span id="line-433"></span><span>  </span><span class="hs-comment">-- has left on the Id.  See Note [IdInfo on nested let-bindings] in GHC.Iface.Syntax</span><span>
</span><span id="line-434"></span><span>
</span><span id="line-435"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceIdDetails"><span class="hs-identifier hs-type">toIfaceIdDetails</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdDetails"><span class="hs-identifier hs-type">IdDetails</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceIdDetails"><span class="hs-identifier hs-type">IfaceIdDetails</span></a></span><span>
</span><span id="line-436"></span><span id="toIfaceIdDetails"><span class="annot"><span class="annottext">toIfaceIdDetails :: IdDetails -&gt; IfaceIdDetails
</span><a href="GHC.CoreToIface.html#toIfaceIdDetails"><span class="hs-identifier hs-var hs-var">toIfaceIdDetails</span></a></span></span><span> </span><span class="annot"><span class="annottext">IdDetails
</span><a href="GHC.Types.Id.Info.html#VanillaId"><span class="hs-identifier hs-var">VanillaId</span></a></span><span>                      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceIdDetails
</span><a href="GHC.Iface.Syntax.html#IfVanillaId"><span class="hs-identifier hs-var">IfVanillaId</span></a></span><span>
</span><span id="line-437"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceIdDetails"><span class="hs-identifier hs-var">toIfaceIdDetails</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#DFunId"><span class="hs-identifier hs-type">DFunId</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>                    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceIdDetails
</span><a href="GHC.Iface.Syntax.html#IfDFunId"><span class="hs-identifier hs-var">IfDFunId</span></a></span><span>
</span><span id="line-438"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceIdDetails"><span class="hs-identifier hs-var">toIfaceIdDetails</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Id.Info.html#RecSelId"><span class="hs-identifier hs-type">RecSelId</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">sel_naughty :: IdDetails -&gt; Bool
</span><a href="GHC.Types.Id.Info.html#sel_naughty"><span class="hs-identifier hs-var">sel_naughty</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680842509"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842509"><span class="hs-identifier hs-var">n</span></a></span></span><span>
</span><span id="line-439"></span><span>                           </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">sel_tycon :: IdDetails -&gt; RecSelParent
</span><a href="GHC.Types.Id.Info.html#sel_tycon"><span class="hs-identifier hs-var">sel_tycon</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680842507"><span class="annot"><span class="annottext">RecSelParent
</span><a href="#local-6989586621680842507"><span class="hs-identifier hs-var">tc</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span>
</span><span id="line-440"></span><span>  </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621680842506"><span class="annot"><span class="annottext">iface :: Either IfaceTyCon IfaceDecl
</span><a href="#local-6989586621680842506"><span class="hs-identifier hs-var hs-var">iface</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">RecSelParent
</span><a href="#local-6989586621680842507"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-441"></span><span>                </span><span class="annot"><a href="GHC.Types.Id.Info.html#RecSelData"><span class="hs-identifier hs-type">RecSelData</span></a></span><span> </span><span id="local-6989586621680842504"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842504"><span class="hs-identifier hs-var">ty_con</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">IfaceTyCon -&gt; Either IfaceTyCon IfaceDecl
forall a b. a -&gt; Either a b
</span><a href="../../base/src/Data.Either.html#Left"><span class="hs-identifier hs-var">Left</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; IfaceTyCon
</span><a href="GHC.CoreToIface.html#toIfaceTyCon"><span class="hs-identifier hs-var">toIfaceTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842504"><span class="hs-identifier hs-var">ty_con</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-442"></span><span>                </span><span class="annot"><a href="GHC.Types.Id.Info.html#RecSelPatSyn"><span class="hs-identifier hs-type">RecSelPatSyn</span></a></span><span> </span><span id="local-6989586621680842502"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680842502"><span class="hs-identifier hs-var">pat_syn</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">IfaceDecl -&gt; Either IfaceTyCon IfaceDecl
forall a b. b -&gt; Either a b
</span><a href="../../base/src/Data.Either.html#Right"><span class="hs-identifier hs-var">Right</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">PatSyn -&gt; IfaceDecl
</span><a href="GHC.CoreToIface.html#patSynToIfaceDecl"><span class="hs-identifier hs-var">patSynToIfaceDecl</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680842502"><span class="hs-identifier hs-var">pat_syn</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-443"></span><span>  </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">Either IfaceTyCon IfaceDecl -&gt; Bool -&gt; IfaceIdDetails
</span><a href="GHC.Iface.Syntax.html#IfRecSelId"><span class="hs-identifier hs-var">IfRecSelId</span></a></span><span> </span><span class="annot"><span class="annottext">Either IfaceTyCon IfaceDecl
</span><a href="#local-6989586621680842506"><span class="hs-identifier hs-var">iface</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842509"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-444"></span><span>
</span><span id="line-445"></span><span>  </span><span class="hs-comment">-- The remaining cases are all &quot;implicit Ids&quot; which don't</span><span>
</span><span id="line-446"></span><span>  </span><span class="hs-comment">-- appear in interface files at all</span><span>
</span><span id="line-447"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceIdDetails"><span class="hs-identifier hs-var">toIfaceIdDetails</span></a></span><span> </span><span id="local-6989586621680842500"><span class="annot"><span class="annottext">IdDetails
</span><a href="#local-6989586621680842500"><span class="hs-identifier hs-var">other</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc -&gt; IfaceIdDetails -&gt; IfaceIdDetails
forall a. String -&gt; SDoc -&gt; a -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprTrace"><span class="hs-identifier hs-var">pprTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;toIfaceIdDetails&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdDetails -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">IdDetails
</span><a href="#local-6989586621680842500"><span class="hs-identifier hs-var">other</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-448"></span><span>                         </span><span class="annot"><span class="annottext">IfaceIdDetails
</span><a href="GHC.Iface.Syntax.html#IfVanillaId"><span class="hs-identifier hs-var">IfVanillaId</span></a></span><span>   </span><span class="hs-comment">-- Unexpected; the other</span><span>
</span><span id="line-449"></span><span>
</span><span id="line-450"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceIdInfo"><span class="hs-identifier hs-type">toIfaceIdInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Id.Info.html#IdInfo"><span class="hs-identifier hs-type">IdInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceIdInfo"><span class="hs-identifier hs-type">IfaceIdInfo</span></a></span><span>
</span><span id="line-451"></span><span id="toIfaceIdInfo"><span class="annot"><span class="annottext">toIfaceIdInfo :: IdInfo -&gt; IfaceIdInfo
</span><a href="GHC.CoreToIface.html#toIfaceIdInfo"><span class="hs-identifier hs-var hs-var">toIfaceIdInfo</span></a></span></span><span> </span><span id="local-6989586621680842498"><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680842498"><span class="hs-identifier hs-var">id_info</span></a></span></span><span>
</span><span id="line-452"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Maybe IfaceInfoItem] -&gt; IfaceIdInfo
forall a. [Maybe a] -&gt; [a]
</span><a href="../../base/src/Data.Maybe.html#catMaybes"><span class="hs-identifier hs-var">catMaybes</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Maybe IfaceInfoItem
</span><a href="#local-6989586621680842497"><span class="hs-identifier hs-var">arity_hsinfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Maybe IfaceInfoItem
</span><a href="#local-6989586621680842496"><span class="hs-identifier hs-var">caf_hsinfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Maybe IfaceInfoItem
</span><a href="#local-6989586621680842495"><span class="hs-identifier hs-var">strict_hsinfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Maybe IfaceInfoItem
</span><a href="#local-6989586621680842494"><span class="hs-identifier hs-var">cpr_hsinfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-453"></span><span>               </span><span class="annot"><span class="annottext">Maybe IfaceInfoItem
</span><a href="#local-6989586621680842493"><span class="hs-identifier hs-var">inline_hsinfo</span></a></span><span class="hs-special">,</span><span>  </span><span class="annot"><span class="annottext">Maybe IfaceInfoItem
</span><a href="#local-6989586621680842492"><span class="hs-identifier hs-var">unfold_hsinfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Maybe IfaceInfoItem
</span><a href="#local-6989586621680842491"><span class="hs-identifier hs-var">levity_hsinfo</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-454"></span><span>               </span><span class="hs-comment">-- NB: strictness and arity must appear in the list before unfolding</span><span>
</span><span id="line-455"></span><span>               </span><span class="hs-comment">-- See GHC.IfaceToCore.tcUnfolding</span><span>
</span><span id="line-456"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-457"></span><span>    </span><span class="hs-comment">------------  Arity  --------------</span><span>
</span><span id="line-458"></span><span>    </span><span id="local-6989586621680842490"><span class="annot"><span class="annottext">arity_info :: Int
</span><a href="#local-6989586621680842490"><span class="hs-identifier hs-var hs-var">arity_info</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; Int
</span><a href="GHC.Types.Id.Info.html#arityInfo"><span class="hs-identifier hs-var">arityInfo</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680842498"><span class="hs-identifier hs-var">id_info</span></a></span><span>
</span><span id="line-459"></span><span>    </span><span id="local-6989586621680842497"><span class="annot"><span class="annottext">arity_hsinfo :: Maybe IfaceInfoItem
</span><a href="#local-6989586621680842497"><span class="hs-identifier hs-var hs-var">arity_hsinfo</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842490"><span class="hs-identifier hs-var">arity_info</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe IfaceInfoItem
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-460"></span><span>                 </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceInfoItem -&gt; Maybe IfaceInfoItem
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; IfaceInfoItem
</span><a href="GHC.Iface.Syntax.html#HsArity"><span class="hs-identifier hs-var">HsArity</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842490"><span class="hs-identifier hs-var">arity_info</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-461"></span><span>
</span><span id="line-462"></span><span>    </span><span class="hs-comment">------------ Caf Info --------------</span><span>
</span><span id="line-463"></span><span>    </span><span id="local-6989586621680842485"><span class="annot"><span class="annottext">caf_info :: CafInfo
</span><a href="#local-6989586621680842485"><span class="hs-identifier hs-var hs-var">caf_info</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; CafInfo
</span><a href="GHC.Types.Id.Info.html#cafInfo"><span class="hs-identifier hs-var">cafInfo</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680842498"><span class="hs-identifier hs-var">id_info</span></a></span><span>
</span><span id="line-464"></span><span>    </span><span id="local-6989586621680842496"><span class="annot"><span class="annottext">caf_hsinfo :: Maybe IfaceInfoItem
</span><a href="#local-6989586621680842496"><span class="hs-identifier hs-var hs-var">caf_hsinfo</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CafInfo
</span><a href="#local-6989586621680842485"><span class="hs-identifier hs-var">caf_info</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-465"></span><span>                   </span><span class="annot"><span class="annottext">CafInfo
</span><a href="GHC.Types.Id.Info.html#NoCafRefs"><span class="hs-identifier hs-var">NoCafRefs</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">IfaceInfoItem -&gt; Maybe IfaceInfoItem
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">IfaceInfoItem
</span><a href="GHC.Iface.Syntax.html#HsNoCafRefs"><span class="hs-identifier hs-var">HsNoCafRefs</span></a></span><span>
</span><span id="line-466"></span><span>                   </span><span id="local-6989586621680842481"><span class="annot"><span class="annottext">CafInfo
</span><a href="#local-6989586621680842481"><span class="hs-identifier hs-var">_other</span></a></span></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Maybe IfaceInfoItem
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-467"></span><span>
</span><span id="line-468"></span><span>    </span><span class="hs-comment">------------  Strictness  --------------</span><span>
</span><span id="line-469"></span><span>        </span><span class="hs-comment">-- No point in explicitly exporting TopSig</span><span>
</span><span id="line-470"></span><span>    </span><span id="local-6989586621680842480"><span class="annot"><span class="annottext">sig_info :: StrictSig
</span><a href="#local-6989586621680842480"><span class="hs-identifier hs-var hs-var">sig_info</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; StrictSig
</span><a href="GHC.Types.Id.Info.html#strictnessInfo"><span class="hs-identifier hs-var hs-var">strictnessInfo</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680842498"><span class="hs-identifier hs-var">id_info</span></a></span><span>
</span><span id="line-471"></span><span>    </span><span id="local-6989586621680842495"><span class="annot"><span class="annottext">strict_hsinfo :: Maybe IfaceInfoItem
</span><a href="#local-6989586621680842495"><span class="hs-identifier hs-var hs-var">strict_hsinfo</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">StrictSig -&gt; Bool
</span><a href="GHC.Types.Demand.html#isTopSig"><span class="hs-identifier hs-var">isTopSig</span></a></span><span> </span><span class="annot"><span class="annottext">StrictSig
</span><a href="#local-6989586621680842480"><span class="hs-identifier hs-var">sig_info</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceInfoItem -&gt; Maybe IfaceInfoItem
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">StrictSig -&gt; IfaceInfoItem
</span><a href="GHC.Iface.Syntax.html#HsStrictness"><span class="hs-identifier hs-var">HsStrictness</span></a></span><span> </span><span class="annot"><span class="annottext">StrictSig
</span><a href="#local-6989586621680842480"><span class="hs-identifier hs-var">sig_info</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-472"></span><span>                  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>               </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe IfaceInfoItem
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-473"></span><span>
</span><span id="line-474"></span><span>    </span><span class="hs-comment">------------  CPR --------------</span><span>
</span><span id="line-475"></span><span>    </span><span id="local-6989586621680842477"><span class="annot"><span class="annottext">cpr_info :: CprSig
</span><a href="#local-6989586621680842477"><span class="hs-identifier hs-var hs-var">cpr_info</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; CprSig
</span><a href="GHC.Types.Id.Info.html#cprInfo"><span class="hs-identifier hs-var hs-var">cprInfo</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680842498"><span class="hs-identifier hs-var">id_info</span></a></span><span>
</span><span id="line-476"></span><span>    </span><span id="local-6989586621680842494"><span class="annot"><span class="annottext">cpr_hsinfo :: Maybe IfaceInfoItem
</span><a href="#local-6989586621680842494"><span class="hs-identifier hs-var hs-var">cpr_hsinfo</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CprSig
</span><a href="#local-6989586621680842477"><span class="hs-identifier hs-var">cpr_info</span></a></span><span> </span><span class="annot"><span class="annottext">CprSig -&gt; CprSig -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">/=</span></span><span> </span><span class="annot"><span class="annottext">CprSig
</span><a href="GHC.Types.Cpr.html#topCprSig"><span class="hs-identifier hs-var">topCprSig</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceInfoItem -&gt; Maybe IfaceInfoItem
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CprSig -&gt; IfaceInfoItem
</span><a href="GHC.Iface.Syntax.html#HsCpr"><span class="hs-identifier hs-var">HsCpr</span></a></span><span> </span><span class="annot"><span class="annottext">CprSig
</span><a href="#local-6989586621680842477"><span class="hs-identifier hs-var">cpr_info</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-477"></span><span>               </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe IfaceInfoItem
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-478"></span><span>    </span><span class="hs-comment">------------  Unfolding  --------------</span><span>
</span><span id="line-479"></span><span>    </span><span id="local-6989586621680842492"><span class="annot"><span class="annottext">unfold_hsinfo :: Maybe IfaceInfoItem
</span><a href="#local-6989586621680842492"><span class="hs-identifier hs-var hs-var">unfold_hsinfo</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Unfolding -&gt; Maybe IfaceInfoItem
</span><a href="GHC.CoreToIface.html#toIfUnfolding"><span class="hs-identifier hs-var">toIfUnfolding</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842471"><span class="hs-identifier hs-var">loop_breaker</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo -&gt; Unfolding
</span><a href="GHC.Types.Id.Info.html#unfoldingInfo"><span class="hs-identifier hs-var hs-var">unfoldingInfo</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680842498"><span class="hs-identifier hs-var">id_info</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-480"></span><span>    </span><span id="local-6989586621680842471"><span class="annot"><span class="annottext">loop_breaker :: Bool
</span><a href="#local-6989586621680842471"><span class="hs-identifier hs-var hs-var">loop_breaker</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">OccInfo -&gt; Bool
</span><a href="GHC.Types.Basic.html#isStrongLoopBreaker"><span class="hs-identifier hs-var">isStrongLoopBreaker</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdInfo -&gt; OccInfo
</span><a href="GHC.Types.Id.Info.html#occInfo"><span class="hs-identifier hs-var hs-var">occInfo</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680842498"><span class="hs-identifier hs-var">id_info</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-481"></span><span>
</span><span id="line-482"></span><span>    </span><span class="hs-comment">------------  Inline prag  --------------</span><span>
</span><span id="line-483"></span><span>    </span><span id="local-6989586621680842467"><span class="annot"><span class="annottext">inline_prag :: InlinePragma
</span><a href="#local-6989586621680842467"><span class="hs-identifier hs-var hs-var">inline_prag</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; InlinePragma
</span><a href="GHC.Types.Id.Info.html#inlinePragInfo"><span class="hs-identifier hs-var hs-var">inlinePragInfo</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680842498"><span class="hs-identifier hs-var">id_info</span></a></span><span>
</span><span id="line-484"></span><span>    </span><span id="local-6989586621680842493"><span class="annot"><span class="annottext">inline_hsinfo :: Maybe IfaceInfoItem
</span><a href="#local-6989586621680842493"><span class="hs-identifier hs-var hs-var">inline_hsinfo</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">InlinePragma -&gt; Bool
</span><a href="GHC.Types.Basic.html#isDefaultInlinePragma"><span class="hs-identifier hs-var">isDefaultInlinePragma</span></a></span><span> </span><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680842467"><span class="hs-identifier hs-var">inline_prag</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe IfaceInfoItem
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-485"></span><span>                  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceInfoItem -&gt; Maybe IfaceInfoItem
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">InlinePragma -&gt; IfaceInfoItem
</span><a href="GHC.Iface.Syntax.html#HsInline"><span class="hs-identifier hs-var">HsInline</span></a></span><span> </span><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680842467"><span class="hs-identifier hs-var">inline_prag</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-486"></span><span>
</span><span id="line-487"></span><span>    </span><span class="hs-comment">------------  Levity polymorphism  ----------</span><span>
</span><span id="line-488"></span><span>    </span><span id="local-6989586621680842491"><span class="annot"><span class="annottext">levity_hsinfo :: Maybe IfaceInfoItem
</span><a href="#local-6989586621680842491"><span class="hs-identifier hs-var hs-var">levity_hsinfo</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; Bool
</span><a href="GHC.Types.Id.Info.html#isNeverLevPolyIdInfo"><span class="hs-identifier hs-var">isNeverLevPolyIdInfo</span></a></span><span> </span><span class="annot"><span class="annottext">IdInfo
</span><a href="#local-6989586621680842498"><span class="hs-identifier hs-var">id_info</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceInfoItem -&gt; Maybe IfaceInfoItem
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">IfaceInfoItem
</span><a href="GHC.Iface.Syntax.html#HsLevity"><span class="hs-identifier hs-var">HsLevity</span></a></span><span>
</span><span id="line-489"></span><span>                  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe IfaceInfoItem
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-490"></span><span>
</span><span id="line-491"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceJoinInfo"><span class="hs-identifier hs-type">toIfaceJoinInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#JoinArity"><span class="hs-identifier hs-type">JoinArity</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceJoinInfo"><span class="hs-identifier hs-type">IfaceJoinInfo</span></a></span><span>
</span><span id="line-492"></span><span id="toIfaceJoinInfo"><span class="annot"><span class="annottext">toIfaceJoinInfo :: Maybe Int -&gt; IfaceJoinInfo
</span><a href="GHC.CoreToIface.html#toIfaceJoinInfo"><span class="hs-identifier hs-var hs-var">toIfaceJoinInfo</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680842460"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842460"><span class="hs-identifier hs-var">ar</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; IfaceJoinInfo
</span><a href="GHC.Iface.Syntax.html#IfaceJoinPoint"><span class="hs-identifier hs-var">IfaceJoinPoint</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842460"><span class="hs-identifier hs-var">ar</span></a></span><span>
</span><span id="line-493"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceJoinInfo"><span class="hs-identifier hs-var">toIfaceJoinInfo</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe Int
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceJoinInfo
</span><a href="GHC.Iface.Syntax.html#IfaceNotJoinPoint"><span class="hs-identifier hs-var">IfaceNotJoinPoint</span></a></span><span>
</span><span id="line-494"></span><span>
</span><span id="line-495"></span><span class="hs-comment">--------------------------</span><span>
</span><span id="line-496"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfUnfolding"><span class="hs-identifier hs-type">toIfUnfolding</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Core.html#Unfolding"><span class="hs-identifier hs-type">Unfolding</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceInfoItem"><span class="hs-identifier hs-type">IfaceInfoItem</span></a></span><span>
</span><span id="line-497"></span><span id="toIfUnfolding"><span class="annot"><span class="annottext">toIfUnfolding :: Bool -&gt; Unfolding -&gt; Maybe IfaceInfoItem
</span><a href="GHC.CoreToIface.html#toIfUnfolding"><span class="hs-identifier hs-var hs-var">toIfUnfolding</span></a></span></span><span> </span><span id="local-6989586621680842457"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842457"><span class="hs-identifier hs-var">lb</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#CoreUnfolding"><span class="hs-identifier hs-type">CoreUnfolding</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">uf_tmpl :: Unfolding -&gt; CoreExpr
</span><a href="GHC.Core.html#uf_tmpl"><span class="hs-identifier hs-var">uf_tmpl</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680842454"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842454"><span class="hs-identifier hs-var">rhs</span></a></span></span><span>
</span><span id="line-498"></span><span>                                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">uf_src :: Unfolding -&gt; UnfoldingSource
</span><a href="GHC.Core.html#uf_src"><span class="hs-identifier hs-var">uf_src</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680842452"><span class="annot"><span class="annottext">UnfoldingSource
</span><a href="#local-6989586621680842452"><span class="hs-identifier hs-var">src</span></a></span></span><span>
</span><span id="line-499"></span><span>                                </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">uf_guidance :: Unfolding -&gt; UnfoldingGuidance
</span><a href="GHC.Core.html#uf_guidance"><span class="hs-identifier hs-var">uf_guidance</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680842450"><span class="annot"><span class="annottext">UnfoldingGuidance
</span><a href="#local-6989586621680842450"><span class="hs-identifier hs-var">guidance</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-500"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceInfoItem -&gt; Maybe IfaceInfoItem
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">(IfaceInfoItem -&gt; Maybe IfaceInfoItem)
-&gt; IfaceInfoItem -&gt; Maybe IfaceInfoItem
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; IfaceUnfolding -&gt; IfaceInfoItem
</span><a href="GHC.Iface.Syntax.html#HsUnfold"><span class="hs-identifier hs-var">HsUnfold</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842457"><span class="hs-identifier hs-var">lb</span></a></span><span> </span><span class="annot"><span class="annottext">(IfaceUnfolding -&gt; IfaceInfoItem)
-&gt; IfaceUnfolding -&gt; IfaceInfoItem
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span>
</span><span id="line-501"></span><span>    </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">UnfoldingSource
</span><a href="#local-6989586621680842452"><span class="hs-identifier hs-var">src</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-502"></span><span>        </span><span class="annot"><span class="annottext">UnfoldingSource
</span><a href="GHC.Core.html#InlineStable"><span class="hs-identifier hs-var">InlineStable</span></a></span><span>
</span><span id="line-503"></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">UnfoldingGuidance
</span><a href="#local-6989586621680842450"><span class="hs-identifier hs-var">guidance</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-504"></span><span>               </span><span class="annot"><a href="GHC.Core.html#UnfWhen"><span class="hs-identifier hs-type">UnfWhen</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">ug_arity :: UnfoldingGuidance -&gt; Int
</span><a href="GHC.Core.html#ug_arity"><span class="hs-identifier hs-var">ug_arity</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680842445"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842445"><span class="hs-identifier hs-var">arity</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ug_unsat_ok :: UnfoldingGuidance -&gt; Bool
</span><a href="GHC.Core.html#ug_unsat_ok"><span class="hs-identifier hs-var">ug_unsat_ok</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680842443"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842443"><span class="hs-identifier hs-var">unsat_ok</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ug_boring_ok :: UnfoldingGuidance -&gt; Bool
</span><a href="GHC.Core.html#ug_boring_ok"><span class="hs-identifier hs-var">ug_boring_ok</span></a></span><span> </span><span class="hs-glyph">=</span><span>  </span><span id="local-6989586621680842441"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842441"><span class="hs-identifier hs-var">boring_ok</span></a></span></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-505"></span><span>                      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Int -&gt; Bool -&gt; Bool -&gt; IfaceExpr -&gt; IfaceUnfolding
</span><a href="GHC.Iface.Syntax.html#IfInlineRule"><span class="hs-identifier hs-var">IfInlineRule</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842445"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842443"><span class="hs-identifier hs-var">unsat_ok</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842441"><span class="hs-identifier hs-var">boring_ok</span></a></span><span> </span><span class="annot"><span class="annottext">IfaceExpr
</span><a href="#local-6989586621680842439"><span class="hs-identifier hs-var">if_rhs</span></a></span><span>
</span><span id="line-506"></span><span>               </span><span id="local-6989586621680842438"><span class="annot"><span class="annottext">UnfoldingGuidance
</span><a href="#local-6989586621680842438"><span class="hs-identifier hs-var">_other</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; IfaceExpr -&gt; IfaceUnfolding
</span><a href="GHC.Iface.Syntax.html#IfCoreUnfold"><span class="hs-identifier hs-var">IfCoreUnfold</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span> </span><span class="annot"><span class="annottext">IfaceExpr
</span><a href="#local-6989586621680842439"><span class="hs-identifier hs-var">if_rhs</span></a></span><span>
</span><span id="line-507"></span><span>        </span><span class="annot"><span class="annottext">UnfoldingSource
</span><a href="GHC.Core.html#InlineCompulsory"><span class="hs-identifier hs-var">InlineCompulsory</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">IfaceExpr -&gt; IfaceUnfolding
</span><a href="GHC.Iface.Syntax.html#IfCompulsory"><span class="hs-identifier hs-var">IfCompulsory</span></a></span><span> </span><span class="annot"><span class="annottext">IfaceExpr
</span><a href="#local-6989586621680842439"><span class="hs-identifier hs-var">if_rhs</span></a></span><span>
</span><span id="line-508"></span><span>        </span><span class="annot"><span class="annottext">UnfoldingSource
</span><a href="GHC.Core.html#InlineRhs"><span class="hs-identifier hs-var">InlineRhs</span></a></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; IfaceExpr -&gt; IfaceUnfolding
</span><a href="GHC.Iface.Syntax.html#IfCoreUnfold"><span class="hs-identifier hs-var">IfCoreUnfold</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="annot"><span class="annottext">IfaceExpr
</span><a href="#local-6989586621680842439"><span class="hs-identifier hs-var">if_rhs</span></a></span><span>
</span><span id="line-509"></span><span>        </span><span class="hs-comment">-- Yes, even if guidance is UnfNever, expose the unfolding</span><span>
</span><span id="line-510"></span><span>        </span><span class="hs-comment">-- If we didn't want to expose the unfolding, GHC.Iface.Tidy would</span><span>
</span><span id="line-511"></span><span>        </span><span class="hs-comment">-- have stuck in NoUnfolding.  For supercompilation we want</span><span>
</span><span id="line-512"></span><span>        </span><span class="hs-comment">-- to see that unfolding!</span><span>
</span><span id="line-513"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-514"></span><span>    </span><span id="local-6989586621680842439"><span class="annot"><span class="annottext">if_rhs :: IfaceExpr
</span><a href="#local-6989586621680842439"><span class="hs-identifier hs-var hs-var">if_rhs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreExpr -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842454"><span class="hs-identifier hs-var">rhs</span></a></span><span>
</span><span id="line-515"></span><span>
</span><span id="line-516"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfUnfolding"><span class="hs-identifier hs-var">toIfUnfolding</span></a></span><span> </span><span id="local-6989586621680842433"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842433"><span class="hs-identifier hs-var">lb</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#DFunUnfolding"><span class="hs-identifier hs-type">DFunUnfolding</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">df_bndrs :: Unfolding -&gt; [CoVar]
</span><a href="GHC.Core.html#df_bndrs"><span class="hs-identifier hs-var">df_bndrs</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680842430"><span class="annot"><span class="annottext">[CoVar]
</span><a href="#local-6989586621680842430"><span class="hs-identifier hs-var">bndrs</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">df_args :: Unfolding -&gt; [CoreExpr]
</span><a href="GHC.Core.html#df_args"><span class="hs-identifier hs-var">df_args</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680842428"><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680842428"><span class="hs-identifier hs-var">args</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-517"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceInfoItem -&gt; Maybe IfaceInfoItem
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Bool -&gt; IfaceUnfolding -&gt; IfaceInfoItem
</span><a href="GHC.Iface.Syntax.html#HsUnfold"><span class="hs-identifier hs-var">HsUnfold</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842433"><span class="hs-identifier hs-var">lb</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[IfaceBndr] -&gt; [IfaceExpr] -&gt; IfaceUnfolding
</span><a href="GHC.Iface.Syntax.html#IfDFunUnfold"><span class="hs-identifier hs-var">IfDFunUnfold</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(CoVar -&gt; IfaceBndr) -&gt; [CoVar] -&gt; [IfaceBndr]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; IfaceBndr
</span><a href="GHC.CoreToIface.html#toIfaceBndr"><span class="hs-identifier hs-var">toIfaceBndr</span></a></span><span> </span><span class="annot"><span class="annottext">[CoVar]
</span><a href="#local-6989586621680842430"><span class="hs-identifier hs-var">bndrs</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(CoreExpr -&gt; IfaceExpr) -&gt; [CoreExpr] -&gt; [IfaceExpr]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680842428"><span class="hs-identifier hs-var">args</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-518"></span><span>      </span><span class="hs-comment">-- No need to serialise the data constructor;</span><span>
</span><span id="line-519"></span><span>      </span><span class="hs-comment">-- we can recover it from the type of the dfun</span><span>
</span><span id="line-520"></span><span>
</span><span id="line-521"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfUnfolding"><span class="hs-identifier hs-var">toIfUnfolding</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#OtherCon"><span class="hs-identifier hs-type">OtherCon</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe IfaceInfoItem
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-522"></span><span>  </span><span class="hs-comment">-- The binding site of an Id doesn't have OtherCon, except perhaps</span><span>
</span><span id="line-523"></span><span>  </span><span class="hs-comment">-- where we have called zapUnfolding; and that evald'ness info is</span><span>
</span><span id="line-524"></span><span>  </span><span class="hs-comment">-- not needed by importing modules</span><span>
</span><span id="line-525"></span><span>
</span><span id="line-526"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfUnfolding"><span class="hs-identifier hs-var">toIfUnfolding</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Unfolding
</span><a href="GHC.Core.html#BootUnfolding"><span class="hs-identifier hs-var">BootUnfolding</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe IfaceInfoItem
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-527"></span><span>  </span><span class="hs-comment">-- Can't happen; we only have BootUnfolding for imported binders</span><span>
</span><span id="line-528"></span><span>
</span><span id="line-529"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfUnfolding"><span class="hs-identifier hs-var">toIfUnfolding</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Unfolding
</span><a href="GHC.Core.html#NoUnfolding"><span class="hs-identifier hs-var">NoUnfolding</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe IfaceInfoItem
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-530"></span><span>
</span><span id="line-531"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
        Conversion of expressions
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-538"></span><span>
</span><span id="line-539"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-type">toIfaceExpr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.html#CoreExpr"><span class="hs-identifier hs-type">CoreExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceExpr"><span class="hs-identifier hs-type">IfaceExpr</span></a></span><span>
</span><span id="line-540"></span><span id="toIfaceExpr"><span class="annot"><span class="annottext">toIfaceExpr :: CoreExpr -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var hs-var">toIfaceExpr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span id="local-6989586621680842422"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842422"><span class="hs-identifier hs-var">v</span></a></span></span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceVar"><span class="hs-identifier hs-var">toIfaceVar</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842422"><span class="hs-identifier hs-var">v</span></a></span><span>
</span><span id="line-541"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Lit"><span class="hs-identifier hs-type">Lit</span></a></span><span> </span><span id="local-6989586621680842420"><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680842420"><span class="hs-identifier hs-var">l</span></a></span></span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Literal -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceLit"><span class="hs-identifier hs-var">IfaceLit</span></a></span><span> </span><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680842420"><span class="hs-identifier hs-var">l</span></a></span><span>
</span><span id="line-542"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span id="local-6989586621680842417"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842417"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceType -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceType"><span class="hs-identifier hs-var">IfaceType</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceType"><span class="hs-identifier hs-var">toIfaceType</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842417"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-543"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Coercion"><span class="hs-identifier hs-type">Coercion</span></a></span><span> </span><span id="local-6989586621680842414"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842414"><span class="hs-identifier hs-var">co</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceCoercion -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceCo"><span class="hs-identifier hs-var">IfaceCo</span></a></span><span>   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="GHC.CoreToIface.html#toIfaceCoercion"><span class="hs-identifier hs-var">toIfaceCoercion</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842414"><span class="hs-identifier hs-var">co</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-544"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Lam"><span class="hs-identifier hs-type">Lam</span></a></span><span> </span><span id="local-6989586621680842411"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842411"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span id="local-6989586621680842410"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842410"><span class="hs-identifier hs-var">b</span></a></span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceLamBndr -&gt; IfaceExpr -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceLam"><span class="hs-identifier hs-var">IfaceLam</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; IfaceBndr
</span><a href="GHC.CoreToIface.html#toIfaceBndr"><span class="hs-identifier hs-var">toIfaceBndr</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842411"><span class="hs-identifier hs-var">x</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; IfaceOneShot
</span><a href="GHC.CoreToIface.html#toIfaceOneShot"><span class="hs-identifier hs-var">toIfaceOneShot</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842411"><span class="hs-identifier hs-var">x</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreExpr -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842410"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-545"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#App"><span class="hs-identifier hs-type">App</span></a></span><span> </span><span id="local-6989586621680842406"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842406"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680842405"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842405"><span class="hs-identifier hs-var">a</span></a></span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreExpr -&gt; [CoreExpr] -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceApp"><span class="hs-identifier hs-var">toIfaceApp</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842406"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842405"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-546"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Case"><span class="hs-identifier hs-type">Case</span></a></span><span> </span><span id="local-6989586621680842403"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842403"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span id="local-6989586621680842402"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842402"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span id="local-6989586621680842401"><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842401"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span id="local-6989586621680842400"><span class="annot"><span class="annottext">[Alt CoVar]
</span><a href="#local-6989586621680842400"><span class="hs-keyword hs-var">as</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-547"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">[Alt CoVar] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#null"><span class="hs-identifier hs-var">null</span></a></span><span> </span><span class="annot"><span class="annottext">[Alt CoVar]
</span><a href="#local-6989586621680842400"><span class="hs-keyword hs-var">as</span></a></span><span>                 </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceExpr -&gt; IfaceType -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceECase"><span class="hs-identifier hs-var">IfaceECase</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreExpr -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842403"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceType"><span class="hs-identifier hs-var">toIfaceType</span></a></span><span> </span><span class="annot"><span class="annottext">Type
</span><a href="#local-6989586621680842401"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-548"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>               </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceExpr -&gt; FastString -&gt; [IfaceAlt] -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceCase"><span class="hs-identifier hs-var">IfaceCase</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreExpr -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842403"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; FastString
forall a. NamedThing a =&gt; a -&gt; FastString
</span><a href="GHC.Types.Name.html#getOccFS"><span class="hs-identifier hs-var">getOccFS</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842402"><span class="hs-identifier hs-var">x</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Alt CoVar -&gt; IfaceAlt) -&gt; [Alt CoVar] -&gt; [IfaceAlt]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">Alt CoVar -&gt; IfaceAlt
</span><a href="GHC.CoreToIface.html#toIfaceAlt"><span class="hs-identifier hs-var">toIfaceAlt</span></a></span><span> </span><span class="annot"><span class="annottext">[Alt CoVar]
</span><a href="#local-6989586621680842400"><span class="hs-keyword hs-var">as</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-549"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Let"><span class="hs-identifier hs-type">Let</span></a></span><span> </span><span id="local-6989586621680842394"><span class="annot"><span class="annottext">Bind CoVar
</span><a href="#local-6989586621680842394"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span id="local-6989586621680842393"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842393"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceBinding -&gt; IfaceExpr -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceLet"><span class="hs-identifier hs-var">IfaceLet</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Bind CoVar -&gt; IfaceBinding
</span><a href="GHC.CoreToIface.html#toIfaceBind"><span class="hs-identifier hs-var">toIfaceBind</span></a></span><span> </span><span class="annot"><span class="annottext">Bind CoVar
</span><a href="#local-6989586621680842394"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreExpr -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842393"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-550"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Cast"><span class="hs-identifier hs-type">Cast</span></a></span><span> </span><span id="local-6989586621680842390"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842390"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span id="local-6989586621680842389"><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842389"><span class="hs-identifier hs-var">co</span></a></span></span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceExpr -&gt; IfaceCoercion -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceCast"><span class="hs-identifier hs-var">IfaceCast</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreExpr -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842390"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindCoercion -&gt; IfaceCoercion
</span><a href="GHC.CoreToIface.html#toIfaceCoercion"><span class="hs-identifier hs-var">toIfaceCoercion</span></a></span><span> </span><span class="annot"><span class="annottext">KindCoercion
</span><a href="#local-6989586621680842389"><span class="hs-identifier hs-var">co</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-551"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Tick"><span class="hs-identifier hs-type">Tick</span></a></span><span> </span><span id="local-6989586621680842386"><span class="annot"><span class="annottext">Tickish CoVar
</span><a href="#local-6989586621680842386"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span id="local-6989586621680842385"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842385"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-552"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680842384"><span class="annot"><span class="annottext">IfaceTickish
</span><a href="#local-6989586621680842384"><span class="hs-identifier hs-var">t'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Tickish CoVar -&gt; Maybe IfaceTickish
</span><a href="GHC.CoreToIface.html#toIfaceTickish"><span class="hs-identifier hs-var">toIfaceTickish</span></a></span><span> </span><span class="annot"><span class="annottext">Tickish CoVar
</span><a href="#local-6989586621680842386"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceTickish -&gt; IfaceExpr -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceTick"><span class="hs-identifier hs-var">IfaceTick</span></a></span><span> </span><span class="annot"><span class="annottext">IfaceTickish
</span><a href="#local-6989586621680842384"><span class="hs-identifier hs-var">t'</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreExpr -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842385"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-553"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreExpr -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842385"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-554"></span><span>
</span><span id="line-555"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceOneShot"><span class="hs-identifier hs-type">toIfaceOneShot</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Type.html#IfaceOneShot"><span class="hs-identifier hs-type">IfaceOneShot</span></a></span><span>
</span><span id="line-556"></span><span id="toIfaceOneShot"><span class="annot"><span class="annottext">toIfaceOneShot :: CoVar -&gt; IfaceOneShot
</span><a href="GHC.CoreToIface.html#toIfaceOneShot"><span class="hs-identifier hs-var hs-var">toIfaceOneShot</span></a></span></span><span> </span><span id="local-6989586621680842382"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842382"><span class="hs-identifier hs-var">id</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; Bool
</span><a href="GHC.Types.Var.html#isId"><span class="hs-identifier hs-var">isId</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842382"><span class="hs-identifier hs-var">id</span></a></span><span>
</span><span id="line-557"></span><span>                  </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">OneShotInfo
</span><a href="GHC.Types.Basic.html#OneShotLam"><span class="hs-identifier hs-var">OneShotLam</span></a></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">IdInfo -&gt; OneShotInfo
</span><a href="GHC.Types.Id.Info.html#oneShotInfo"><span class="hs-identifier hs-var">oneShotInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">HasDebugCallStack =&gt; CoVar -&gt; IdInfo
CoVar -&gt; IdInfo
</span><a href="GHC.Types.Var.html#idInfo"><span class="hs-identifier hs-var">idInfo</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842382"><span class="hs-identifier hs-var">id</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-558"></span><span>                  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceOneShot
</span><a href="GHC.Iface.Type.html#IfaceOneShot"><span class="hs-identifier hs-var">IfaceOneShot</span></a></span><span>
</span><span id="line-559"></span><span>                  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-560"></span><span>                  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceOneShot
</span><a href="GHC.Iface.Type.html#IfaceNoOneShot"><span class="hs-identifier hs-var">IfaceNoOneShot</span></a></span><span>
</span><span id="line-561"></span><span>
</span><span id="line-562"></span><span class="hs-comment">---------------------</span><span>
</span><span id="line-563"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTickish"><span class="hs-identifier hs-type">toIfaceTickish</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.html#Tickish"><span class="hs-identifier hs-type">Tickish</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceTickish"><span class="hs-identifier hs-type">IfaceTickish</span></a></span><span>
</span><span id="line-564"></span><span id="toIfaceTickish"><span class="annot"><span class="annottext">toIfaceTickish :: Tickish CoVar -&gt; Maybe IfaceTickish
</span><a href="GHC.CoreToIface.html#toIfaceTickish"><span class="hs-identifier hs-var hs-var">toIfaceTickish</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#ProfNote"><span class="hs-identifier hs-type">ProfNote</span></a></span><span> </span><span id="local-6989586621680842376"><span class="annot"><span class="annottext">CostCentre
</span><a href="#local-6989586621680842376"><span class="hs-identifier hs-var">cc</span></a></span></span><span> </span><span id="local-6989586621680842375"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842375"><span class="hs-identifier hs-var">tick</span></a></span></span><span> </span><span id="local-6989586621680842374"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842374"><span class="hs-identifier hs-var">push</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceTickish -&gt; Maybe IfaceTickish
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CostCentre -&gt; Bool -&gt; Bool -&gt; IfaceTickish
</span><a href="GHC.Iface.Syntax.html#IfaceSCC"><span class="hs-identifier hs-var">IfaceSCC</span></a></span><span> </span><span class="annot"><span class="annottext">CostCentre
</span><a href="#local-6989586621680842376"><span class="hs-identifier hs-var">cc</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842375"><span class="hs-identifier hs-var">tick</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842374"><span class="hs-identifier hs-var">push</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-565"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTickish"><span class="hs-identifier hs-var">toIfaceTickish</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#HpcTick"><span class="hs-identifier hs-type">HpcTick</span></a></span><span> </span><span id="local-6989586621680842371"><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680842371"><span class="hs-identifier hs-var">modl</span></a></span></span><span> </span><span id="local-6989586621680842370"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842370"><span class="hs-identifier hs-var">ix</span></a></span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceTickish -&gt; Maybe IfaceTickish
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Module -&gt; Int -&gt; IfaceTickish
</span><a href="GHC.Iface.Syntax.html#IfaceHpcTick"><span class="hs-identifier hs-var">IfaceHpcTick</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680842371"><span class="hs-identifier hs-var">modl</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842370"><span class="hs-identifier hs-var">ix</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-566"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTickish"><span class="hs-identifier hs-var">toIfaceTickish</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#SourceNote"><span class="hs-identifier hs-type">SourceNote</span></a></span><span> </span><span id="local-6989586621680842367"><span class="annot"><span class="annottext">RealSrcSpan
</span><a href="#local-6989586621680842367"><span class="hs-identifier hs-var">src</span></a></span></span><span> </span><span id="local-6989586621680842366"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621680842366"><span class="hs-identifier hs-var">names</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceTickish -&gt; Maybe IfaceTickish
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RealSrcSpan -&gt; String -&gt; IfaceTickish
</span><a href="GHC.Iface.Syntax.html#IfaceSource"><span class="hs-identifier hs-var">IfaceSource</span></a></span><span> </span><span class="annot"><span class="annottext">RealSrcSpan
</span><a href="#local-6989586621680842367"><span class="hs-identifier hs-var">src</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621680842366"><span class="hs-identifier hs-var">names</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-567"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceTickish"><span class="hs-identifier hs-var">toIfaceTickish</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Breakpoint"><span class="hs-identifier hs-type">Breakpoint</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe IfaceTickish
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-568"></span><span>   </span><span class="hs-comment">-- Ignore breakpoints, since they are relevant only to GHCi, and</span><span>
</span><span id="line-569"></span><span>   </span><span class="hs-comment">-- should not be serialised (#8333)</span><span>
</span><span id="line-570"></span><span>
</span><span id="line-571"></span><span class="hs-comment">---------------------</span><span>
</span><span id="line-572"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceBind"><span class="hs-identifier hs-type">toIfaceBind</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.html#Bind"><span class="hs-identifier hs-type">Bind</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceBinding"><span class="hs-identifier hs-type">IfaceBinding</span></a></span><span>
</span><span id="line-573"></span><span id="toIfaceBind"><span class="annot"><span class="annottext">toIfaceBind :: Bind CoVar -&gt; IfaceBinding
</span><a href="GHC.CoreToIface.html#toIfaceBind"><span class="hs-identifier hs-var hs-var">toIfaceBind</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#NonRec"><span class="hs-identifier hs-type">NonRec</span></a></span><span> </span><span id="local-6989586621680842362"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842362"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span id="local-6989586621680842361"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842361"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceLetBndr -&gt; IfaceExpr -&gt; IfaceBinding
</span><a href="GHC.Iface.Syntax.html#IfaceNonRec"><span class="hs-identifier hs-var">IfaceNonRec</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; IfaceLetBndr
</span><a href="GHC.CoreToIface.html#toIfaceLetBndr"><span class="hs-identifier hs-var">toIfaceLetBndr</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842362"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreExpr -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842361"><span class="hs-identifier hs-var">r</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-574"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceBind"><span class="hs-identifier hs-var">toIfaceBind</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Rec"><span class="hs-identifier hs-type">Rec</span></a></span><span> </span><span id="local-6989586621680842358"><span class="annot"><span class="annottext">[(CoVar, CoreExpr)]
</span><a href="#local-6989586621680842358"><span class="hs-identifier hs-var">prs</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[(IfaceLetBndr, IfaceExpr)] -&gt; IfaceBinding
</span><a href="GHC.Iface.Syntax.html#IfaceRec"><span class="hs-identifier hs-var">IfaceRec</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; IfaceLetBndr
</span><a href="GHC.CoreToIface.html#toIfaceLetBndr"><span class="hs-identifier hs-var">toIfaceLetBndr</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842356"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CoreExpr -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842355"><span class="hs-identifier hs-var">r</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">|</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680842356"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842356"><span class="hs-identifier hs-var">b</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621680842355"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842355"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[(CoVar, CoreExpr)]
</span><a href="#local-6989586621680842358"><span class="hs-identifier hs-var">prs</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-575"></span><span>
</span><span id="line-576"></span><span class="hs-comment">---------------------</span><span>
</span><span id="line-577"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceAlt"><span class="hs-identifier hs-type">toIfaceAlt</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#AltCon"><span class="hs-identifier hs-type">AltCon</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Core.html#CoreExpr"><span class="hs-identifier hs-type">CoreExpr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-578"></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceConAlt"><span class="hs-identifier hs-type">IfaceConAlt</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Data.FastString.html#FastString"><span class="hs-identifier hs-type">FastString</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceExpr"><span class="hs-identifier hs-type">IfaceExpr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-579"></span><span id="toIfaceAlt"><span class="annot"><span class="annottext">toIfaceAlt :: Alt CoVar -&gt; IfaceAlt
</span><a href="GHC.CoreToIface.html#toIfaceAlt"><span class="hs-identifier hs-var hs-var">toIfaceAlt</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621680842354"><span class="annot"><span class="annottext">AltCon
</span><a href="#local-6989586621680842354"><span class="hs-identifier hs-var">c</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621680842353"><span class="annot"><span class="annottext">[CoVar]
</span><a href="#local-6989586621680842353"><span class="hs-identifier hs-var">bs</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621680842352"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842352"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AltCon -&gt; IfaceConAlt
</span><a href="GHC.CoreToIface.html#toIfaceCon"><span class="hs-identifier hs-var">toIfaceCon</span></a></span><span> </span><span class="annot"><span class="annottext">AltCon
</span><a href="#local-6989586621680842354"><span class="hs-identifier hs-var">c</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">(CoVar -&gt; FastString) -&gt; [CoVar] -&gt; [FastString]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; FastString
forall a. NamedThing a =&gt; a -&gt; FastString
</span><a href="GHC.Types.Name.html#getOccFS"><span class="hs-identifier hs-var">getOccFS</span></a></span><span> </span><span class="annot"><span class="annottext">[CoVar]
</span><a href="#local-6989586621680842353"><span class="hs-identifier hs-var">bs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CoreExpr -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842352"><span class="hs-identifier hs-var">r</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-580"></span><span>
</span><span id="line-581"></span><span class="hs-comment">---------------------</span><span>
</span><span id="line-582"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceCon"><span class="hs-identifier hs-type">toIfaceCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.html#AltCon"><span class="hs-identifier hs-type">AltCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceConAlt"><span class="hs-identifier hs-type">IfaceConAlt</span></a></span><span>
</span><span id="line-583"></span><span id="toIfaceCon"><span class="annot"><span class="annottext">toIfaceCon :: AltCon -&gt; IfaceConAlt
</span><a href="GHC.CoreToIface.html#toIfaceCon"><span class="hs-identifier hs-var hs-var">toIfaceCon</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#DataAlt"><span class="hs-identifier hs-type">DataAlt</span></a></span><span> </span><span id="local-6989586621680842350"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680842350"><span class="hs-identifier hs-var">dc</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; IfaceConAlt
</span><a href="GHC.Iface.Syntax.html#IfaceDataAlt"><span class="hs-identifier hs-var">IfaceDataAlt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DataCon -&gt; Name
forall a. NamedThing a =&gt; a -&gt; Name
</span><a href="GHC.Types.Name.html#getName"><span class="hs-identifier hs-var">getName</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680842350"><span class="hs-identifier hs-var">dc</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-584"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceCon"><span class="hs-identifier hs-var">toIfaceCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#LitAlt"><span class="hs-identifier hs-type">LitAlt</span></a></span><span> </span><span id="local-6989586621680842347"><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680842347"><span class="hs-identifier hs-var">l</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Literal -&gt; IfaceConAlt
</span><a href="GHC.Iface.Syntax.html#IfaceLitAlt"><span class="hs-identifier hs-var">IfaceLitAlt</span></a></span><span> </span><span class="annot"><span class="annottext">Literal
</span><a href="#local-6989586621680842347"><span class="hs-identifier hs-var">l</span></a></span><span>
</span><span id="line-585"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceCon"><span class="hs-identifier hs-var">toIfaceCon</span></a></span><span> </span><span class="annot"><span class="annottext">AltCon
</span><a href="GHC.Core.html#DEFAULT"><span class="hs-identifier hs-var">DEFAULT</span></a></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceConAlt
</span><a href="GHC.Iface.Syntax.html#IfaceDefault"><span class="hs-identifier hs-var">IfaceDefault</span></a></span><span>
</span><span id="line-586"></span><span>
</span><span id="line-587"></span><span class="hs-comment">---------------------</span><span>
</span><span id="line-588"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceApp"><span class="hs-identifier hs-type">toIfaceApp</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.html#Expr"><span class="hs-identifier hs-type">Expr</span></a></span><span> </span><span class="annot"><a href="GHC.Core.html#CoreBndr"><span class="hs-identifier hs-type">CoreBndr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.html#Arg"><span class="hs-identifier hs-type">Arg</span></a></span><span> </span><span class="annot"><a href="GHC.Core.html#CoreBndr"><span class="hs-identifier hs-type">CoreBndr</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceExpr"><span class="hs-identifier hs-type">IfaceExpr</span></a></span><span>
</span><span id="line-589"></span><span id="toIfaceApp"><span class="annot"><span class="annottext">toIfaceApp :: CoreExpr -&gt; [CoreExpr] -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceApp"><span class="hs-identifier hs-var hs-var">toIfaceApp</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#App"><span class="hs-identifier hs-type">App</span></a></span><span> </span><span id="local-6989586621680842341"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842341"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680842340"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842340"><span class="hs-identifier hs-var">a</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680842339"><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680842339"><span class="hs-keyword hs-var">as</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoreExpr -&gt; [CoreExpr] -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceApp"><span class="hs-identifier hs-var">toIfaceApp</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842341"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842340"><span class="hs-identifier hs-var">a</span></a></span><span class="annot"><span class="annottext">CoreExpr -&gt; [CoreExpr] -&gt; [CoreExpr]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680842339"><span class="hs-keyword hs-var">as</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-590"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceApp"><span class="hs-identifier hs-var">toIfaceApp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.html#Var"><span class="hs-identifier hs-type">Var</span></a></span><span> </span><span id="local-6989586621680842338"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842338"><span class="hs-identifier hs-var">v</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621680842337"><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680842337"><span class="hs-keyword hs-var">as</span></a></span></span><span>
</span><span id="line-591"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; Maybe DataCon
</span><a href="GHC.Types.Id.html#isDataConWorkId_maybe"><span class="hs-identifier hs-var">isDataConWorkId_maybe</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842338"><span class="hs-identifier hs-var">v</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-592"></span><span>        </span><span class="hs-comment">-- We convert the *worker* for tuples into IfaceTuples</span><span>
</span><span id="line-593"></span><span>        </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680842335"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680842335"><span class="hs-identifier hs-var">dc</span></a></span></span><span> </span><span class="hs-glyph">|</span><span>  </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842334"><span class="hs-identifier hs-var">saturated</span></a></span><span>
</span><span id="line-594"></span><span>                </span><span class="hs-special">,</span><span>  </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680842333"><span class="annot"><span class="annottext">TupleSort
</span><a href="#local-6989586621680842333"><span class="hs-identifier hs-var">tup_sort</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Maybe TupleSort
</span><a href="GHC.Core.TyCon.html#tyConTuple_maybe"><span class="hs-identifier hs-var">tyConTuple_maybe</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621680842332"><span class="hs-identifier hs-var">tc</span></a></span><span>
</span><span id="line-595"></span><span>                </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TupleSort -&gt; [IfaceExpr] -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceTuple"><span class="hs-identifier hs-var">IfaceTuple</span></a></span><span> </span><span class="annot"><span class="annottext">TupleSort
</span><a href="#local-6989586621680842333"><span class="hs-identifier hs-var">tup_sort</span></a></span><span> </span><span class="annot"><span class="annottext">[IfaceExpr]
</span><a href="#local-6989586621680842330"><span class="hs-identifier hs-var">tup_args</span></a></span><span>
</span><span id="line-596"></span><span>          </span><span class="hs-keyword">where</span><span>
</span><span id="line-597"></span><span>            </span><span id="local-6989586621680842329"><span class="annot"><span class="annottext">val_args :: [CoreExpr]
</span><a href="#local-6989586621680842329"><span class="hs-identifier hs-var hs-var">val_args</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CoreExpr -&gt; Bool) -&gt; [CoreExpr] -&gt; [CoreExpr]
forall a. (a -&gt; Bool) -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.List.html#dropWhile"><span class="hs-identifier hs-var">dropWhile</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr -&gt; Bool
forall b. Expr b -&gt; Bool
</span><a href="GHC.Core.html#isTypeArg"><span class="hs-identifier hs-var">isTypeArg</span></a></span><span> </span><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680842337"><span class="hs-keyword hs-var">as</span></a></span><span>
</span><span id="line-598"></span><span>            </span><span id="local-6989586621680842334"><span class="annot"><span class="annottext">saturated :: Bool
</span><a href="#local-6989586621680842334"><span class="hs-identifier hs-var hs-var">saturated</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680842329"><span class="hs-identifier hs-var">val_args</span></a></span><span> </span><span class="annot"><span class="annottext">[CoreExpr] -&gt; Int -&gt; Bool
forall a. [a] -&gt; Int -&gt; Bool
</span><a href="GHC.Utils.Misc.html#lengthIs"><span class="hs-operator hs-var">`lengthIs`</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; Int
</span><a href="GHC.Types.Id.html#idArity"><span class="hs-identifier hs-var">idArity</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842338"><span class="hs-identifier hs-var">v</span></a></span><span>
</span><span id="line-599"></span><span>            </span><span id="local-6989586621680842330"><span class="annot"><span class="annottext">tup_args :: [IfaceExpr]
</span><a href="#local-6989586621680842330"><span class="hs-identifier hs-var hs-var">tup_args</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CoreExpr -&gt; IfaceExpr) -&gt; [CoreExpr] -&gt; [IfaceExpr]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680842329"><span class="hs-identifier hs-var">val_args</span></a></span><span>
</span><span id="line-600"></span><span>            </span><span id="local-6989586621680842332"><span class="annot"><span class="annottext">tc :: TyCon
</span><a href="#local-6989586621680842332"><span class="hs-identifier hs-var hs-var">tc</span></a></span></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; TyCon
</span><a href="GHC.Core.DataCon.html#dataConTyCon"><span class="hs-identifier hs-var">dataConTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680842335"><span class="hs-identifier hs-var">dc</span></a></span><span>
</span><span id="line-601"></span><span>
</span><span id="line-602"></span><span>        </span><span class="annot"><span class="annottext">Maybe DataCon
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">IfaceExpr -&gt; [CoreExpr] -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#mkIfaceApps"><span class="hs-identifier hs-var">mkIfaceApps</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceVar"><span class="hs-identifier hs-var">toIfaceVar</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842338"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680842337"><span class="hs-keyword hs-var">as</span></a></span><span>
</span><span id="line-603"></span><span>
</span><span id="line-604"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceApp"><span class="hs-identifier hs-var">toIfaceApp</span></a></span><span> </span><span id="local-6989586621680842323"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842323"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span id="local-6989586621680842322"><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680842322"><span class="hs-keyword hs-var">as</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IfaceExpr -&gt; [CoreExpr] -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#mkIfaceApps"><span class="hs-identifier hs-var">mkIfaceApps</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreExpr -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842323"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680842322"><span class="hs-keyword hs-var">as</span></a></span><span>
</span><span id="line-605"></span><span>
</span><span id="line-606"></span><span class="annot"><a href="GHC.CoreToIface.html#mkIfaceApps"><span class="hs-identifier hs-type">mkIfaceApps</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceExpr"><span class="hs-identifier hs-type">IfaceExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.html#CoreExpr"><span class="hs-identifier hs-type">CoreExpr</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceExpr"><span class="hs-identifier hs-type">IfaceExpr</span></a></span><span>
</span><span id="line-607"></span><span id="mkIfaceApps"><span class="annot"><span class="annottext">mkIfaceApps :: IfaceExpr -&gt; [CoreExpr] -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#mkIfaceApps"><span class="hs-identifier hs-var hs-var">mkIfaceApps</span></a></span></span><span> </span><span id="local-6989586621680842321"><span class="annot"><span class="annottext">IfaceExpr
</span><a href="#local-6989586621680842321"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680842320"><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680842320"><span class="hs-keyword hs-var">as</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(IfaceExpr -&gt; CoreExpr -&gt; IfaceExpr)
-&gt; IfaceExpr -&gt; [CoreExpr] -&gt; IfaceExpr
forall (t :: * -&gt; *) b a.
Foldable t =&gt;
(b -&gt; a -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldl%27"><span class="hs-identifier hs-var">foldl'</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621680842318"><span class="annot"><span class="annottext">IfaceExpr
</span><a href="#local-6989586621680842318"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621680842317"><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842317"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">IfaceExpr -&gt; IfaceExpr -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceApp"><span class="hs-identifier hs-var">IfaceApp</span></a></span><span> </span><span class="annot"><span class="annottext">IfaceExpr
</span><a href="#local-6989586621680842318"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoreExpr -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceExpr"><span class="hs-identifier hs-var">toIfaceExpr</span></a></span><span> </span><span class="annot"><span class="annottext">CoreExpr
</span><a href="#local-6989586621680842317"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">IfaceExpr
</span><a href="#local-6989586621680842321"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">[CoreExpr]
</span><a href="#local-6989586621680842320"><span class="hs-keyword hs-var">as</span></a></span><span>
</span><span id="line-608"></span><span>
</span><span id="line-609"></span><span class="hs-comment">---------------------</span><span>
</span><span id="line-610"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceVar"><span class="hs-identifier hs-type">toIfaceVar</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceExpr"><span class="hs-identifier hs-type">IfaceExpr</span></a></span><span>
</span><span id="line-611"></span><span id="toIfaceVar"><span class="annot"><span class="annottext">toIfaceVar :: CoVar -&gt; IfaceExpr
</span><a href="GHC.CoreToIface.html#toIfaceVar"><span class="hs-identifier hs-var hs-var">toIfaceVar</span></a></span></span><span> </span><span id="local-6989586621680842315"><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842315"><span class="hs-identifier hs-var">v</span></a></span></span><span>
</span><span id="line-612"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Unfolding -&gt; Bool
</span><a href="GHC.Core.html#isBootUnfolding"><span class="hs-identifier hs-var">isBootUnfolding</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; Unfolding
</span><a href="GHC.Types.Id.html#idUnfolding"><span class="hs-identifier hs-var">idUnfolding</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842315"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-613"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="hs-comment">-- See Note [Inlining and hs-boot files]</span><span>
</span><span id="line-614"></span><span>      </span><span class="annot"><span class="annottext">IfaceExpr -&gt; IfaceExpr -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceApp"><span class="hs-identifier hs-var">IfaceApp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IfaceExpr -&gt; IfaceExpr -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceApp"><span class="hs-identifier hs-var">IfaceApp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceExt"><span class="hs-identifier hs-var">IfaceExt</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="GHC.Types.Id.Make.html#noinlineIdName"><span class="hs-identifier hs-var">noinlineIdName</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-615"></span><span>                         </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IfaceType -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceType"><span class="hs-identifier hs-var">IfaceType</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceType"><span class="hs-identifier hs-var">toIfaceType</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; Type
</span><a href="GHC.Types.Id.html#idType"><span class="hs-identifier hs-var">idType</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842315"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-616"></span><span>               </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceExt"><span class="hs-identifier hs-var">IfaceExt</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680842311"><span class="hs-identifier hs-var">name</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- don't use mkIfaceApps, or infinite loop</span><span>
</span><span id="line-617"></span><span>
</span><span id="line-618"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680842310"><span class="annot"><span class="annottext">ForeignCall
</span><a href="#local-6989586621680842310"><span class="hs-identifier hs-var">fcall</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; Maybe ForeignCall
</span><a href="GHC.Types.Id.html#isFCallId_maybe"><span class="hs-identifier hs-var">isFCallId_maybe</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842315"><span class="hs-identifier hs-var">v</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ForeignCall -&gt; IfaceType -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceFCall"><span class="hs-identifier hs-var">IfaceFCall</span></a></span><span> </span><span class="annot"><span class="annottext">ForeignCall
</span><a href="#local-6989586621680842310"><span class="hs-identifier hs-var">fcall</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; IfaceType
</span><a href="GHC.CoreToIface.html#toIfaceType"><span class="hs-identifier hs-var">toIfaceType</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CoVar -&gt; Type
</span><a href="GHC.Types.Id.html#idType"><span class="hs-identifier hs-var">idType</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842315"><span class="hs-identifier hs-var">v</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-619"></span><span>                                      </span><span class="hs-comment">-- Foreign calls have special syntax</span><span>
</span><span id="line-620"></span><span>
</span><span id="line-621"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Bool
</span><a href="GHC.Types.Name.html#isExternalName"><span class="hs-identifier hs-var">isExternalName</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680842311"><span class="hs-identifier hs-var">name</span></a></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceExt"><span class="hs-identifier hs-var">IfaceExt</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680842311"><span class="hs-identifier hs-var">name</span></a></span><span>
</span><span id="line-622"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; IfaceExpr
</span><a href="GHC.Iface.Syntax.html#IfaceLcl"><span class="hs-identifier hs-var">IfaceLcl</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; FastString
forall a. NamedThing a =&gt; a -&gt; FastString
</span><a href="GHC.Types.Name.html#getOccFS"><span class="hs-identifier hs-var">getOccFS</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680842311"><span class="hs-identifier hs-var">name</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-623"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621680842311"><span class="annot"><span class="annottext">name :: Name
</span><a href="#local-6989586621680842311"><span class="hs-identifier hs-var hs-var">name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CoVar -&gt; Name
</span><a href="GHC.Types.Id.html#idName"><span class="hs-identifier hs-var">idName</span></a></span><span> </span><span class="annot"><span class="annottext">CoVar
</span><a href="#local-6989586621680842315"><span class="hs-identifier hs-var">v</span></a></span><span>
</span><span id="line-624"></span><span>
</span><span id="line-625"></span><span>
</span><span id="line-626"></span><span class="hs-comment">---------------------</span><span>
</span><span id="line-627"></span><span class="annot"><a href="GHC.CoreToIface.html#toIfaceLFInfo"><span class="hs-identifier hs-type">toIfaceLFInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.StgToCmm.Types.html#LambdaFormInfo"><span class="hs-identifier hs-type">LambdaFormInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Iface.Syntax.html#IfaceLFInfo"><span class="hs-identifier hs-type">IfaceLFInfo</span></a></span><span>
</span><span id="line-628"></span><span id="toIfaceLFInfo"><span class="annot"><span class="annottext">toIfaceLFInfo :: Name -&gt; LambdaFormInfo -&gt; IfaceLFInfo
</span><a href="GHC.CoreToIface.html#toIfaceLFInfo"><span class="hs-identifier hs-var hs-var">toIfaceLFInfo</span></a></span></span><span> </span><span id="local-6989586621680842305"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680842305"><span class="hs-identifier hs-var">nm</span></a></span></span><span> </span><span id="local-6989586621680842304"><span class="annot"><span class="annottext">LambdaFormInfo
</span><a href="#local-6989586621680842304"><span class="hs-identifier hs-var">lfi</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">LambdaFormInfo
</span><a href="#local-6989586621680842304"><span class="hs-identifier hs-var">lfi</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-629"></span><span>    </span><span class="annot"><a href="GHC.StgToCmm.Types.html#LFReEntrant"><span class="hs-identifier hs-type">LFReEntrant</span></a></span><span> </span><span id="local-6989586621680842302"><span class="annot"><span class="annottext">TopLevelFlag
</span><a href="#local-6989586621680842302"><span class="hs-identifier hs-var">top_lvl</span></a></span></span><span> </span><span id="local-6989586621680842301"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842301"><span class="hs-identifier hs-var">arity</span></a></span></span><span> </span><span id="local-6989586621680842300"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842300"><span class="hs-identifier hs-var">no_fvs</span></a></span></span><span> </span><span id="local-6989586621680842299"><span class="annot"><span class="annottext">ArgDescr
</span><a href="#local-6989586621680842299"><span class="hs-identifier hs-var">_arg_descr</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-630"></span><span>      </span><span class="hs-comment">-- Exported LFReEntrant closures are top level, and top-level closures</span><span>
</span><span id="line-631"></span><span>      </span><span class="hs-comment">-- don't have free variables</span><span>
</span><span id="line-632"></span><span>      </span><span class="hs-identifier">ASSERT2</span><span class="hs-special">(</span><span class="hs-identifier">isTopLevel</span><span> </span><span class="hs-identifier">top_lvl</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">ppr</span><span> </span><span class="hs-identifier">nm</span><span class="hs-special">)</span><span>
</span><span id="line-633"></span><span>      </span><span class="hs-identifier">ASSERT2</span><span class="hs-special">(</span><span class="hs-identifier">no_fvs</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">ppr</span><span> </span><span class="hs-identifier">nm</span><span class="hs-special">)</span><span>
</span><span id="line-634"></span><span>      </span><span class="annot"><span class="annottext">Int -&gt; IfaceLFInfo
</span><a href="GHC.Iface.Syntax.html#IfLFReEntrant"><span class="hs-identifier hs-var">IfLFReEntrant</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680842301"><span class="hs-identifier hs-var">arity</span></a></span><span>
</span><span id="line-635"></span><span>    </span><span class="annot"><a href="GHC.StgToCmm.Types.html#LFThunk"><span class="hs-identifier hs-type">LFThunk</span></a></span><span> </span><span id="local-6989586621680842292"><span class="annot"><span class="annottext">TopLevelFlag
</span><a href="#local-6989586621680842292"><span class="hs-identifier hs-var">top_lvl</span></a></span></span><span> </span><span id="local-6989586621680842291"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842291"><span class="hs-identifier hs-var">no_fvs</span></a></span></span><span> </span><span id="local-6989586621680842290"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842290"><span class="hs-identifier hs-var">updatable</span></a></span></span><span> </span><span id="local-6989586621680842289"><span class="annot"><span class="annottext">StandardFormInfo
</span><a href="#local-6989586621680842289"><span class="hs-identifier hs-var">sfi</span></a></span></span><span> </span><span id="local-6989586621680842288"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842288"><span class="hs-identifier hs-var">mb_fun</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-636"></span><span>      </span><span class="hs-comment">-- Exported LFThunk closures are top level (which don't have free</span><span>
</span><span id="line-637"></span><span>      </span><span class="hs-comment">-- variables) and non-standard (see cgTopRhsClosure)</span><span>
</span><span id="line-638"></span><span>      </span><span class="hs-identifier">ASSERT2</span><span class="hs-special">(</span><span class="hs-identifier">isTopLevel</span><span> </span><span class="hs-identifier">top_lvl</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">ppr</span><span> </span><span class="hs-identifier">nm</span><span class="hs-special">)</span><span>
</span><span id="line-639"></span><span>      </span><span class="hs-identifier">ASSERT2</span><span class="hs-special">(</span><span class="hs-identifier">no_fvs</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">ppr</span><span> </span><span class="hs-identifier">nm</span><span class="hs-special">)</span><span>
</span><span id="line-640"></span><span>      </span><span class="hs-identifier">ASSERT2</span><span class="hs-special">(</span><span class="hs-identifier">sfi</span><span> </span><span class="hs-operator">==</span><span> </span><span class="hs-identifier">NonStandardThunk</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">ppr</span><span> </span><span class="hs-identifier">nm</span><span class="hs-special">)</span><span>
</span><span id="line-641"></span><span>      </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; IfaceLFInfo
</span><a href="GHC.Iface.Syntax.html#IfLFThunk"><span class="hs-identifier hs-var">IfLFThunk</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842290"><span class="hs-identifier hs-var">updatable</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842288"><span class="hs-identifier hs-var">mb_fun</span></a></span><span>
</span><span id="line-642"></span><span>    </span><span class="annot"><a href="GHC.StgToCmm.Types.html#LFCon"><span class="hs-identifier hs-type">LFCon</span></a></span><span> </span><span id="local-6989586621680842284"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680842284"><span class="hs-identifier hs-var">dc</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-643"></span><span>      </span><span class="annot"><span class="annottext">Name -&gt; IfaceLFInfo
</span><a href="GHC.Iface.Syntax.html#IfLFCon"><span class="hs-identifier hs-var">IfLFCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DataCon -&gt; Name
</span><a href="GHC.Core.DataCon.html#dataConName"><span class="hs-identifier hs-var">dataConName</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680842284"><span class="hs-identifier hs-var">dc</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-644"></span><span>    </span><span class="annot"><a href="GHC.StgToCmm.Types.html#LFUnknown"><span class="hs-identifier hs-type">LFUnknown</span></a></span><span> </span><span id="local-6989586621680842280"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842280"><span class="hs-identifier hs-var">mb_fun</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-645"></span><span>      </span><span class="annot"><span class="annottext">Bool -&gt; IfaceLFInfo
</span><a href="GHC.Iface.Syntax.html#IfLFUnknown"><span class="hs-identifier hs-var">IfLFUnknown</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680842280"><span class="hs-identifier hs-var">mb_fun</span></a></span><span>
</span><span id="line-646"></span><span>    </span><span class="annot"><span class="annottext">LambdaFormInfo
</span><a href="GHC.StgToCmm.Types.html#LFUnlifted"><span class="hs-identifier hs-var">LFUnlifted</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-647"></span><span>      </span><span class="annot"><span class="annottext">IfaceLFInfo
</span><a href="GHC.Iface.Syntax.html#IfLFUnlifted"><span class="hs-identifier hs-var">IfLFUnlifted</span></a></span><span>
</span><span id="line-648"></span><span>    </span><span class="annot"><span class="annottext">LambdaFormInfo
</span><a href="GHC.StgToCmm.Types.html#LFLetNoEscape"><span class="hs-identifier hs-var">LFLetNoEscape</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-649"></span><span>      </span><span class="annot"><span class="annottext">String -&gt; IfaceLFInfo
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;toIfaceLFInfo: LFLetNoEscape&quot;</span></span><span>
</span><span id="line-650"></span><span>
</span><span id="line-651"></span><span class="hs-comment">{- Note [Inlining and hs-boot files]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Consider this example (#10083, #12789):

    ---------- RSR.hs-boot ------------
    module RSR where
      data RSR
      eqRSR :: RSR -&gt; RSR -&gt; Bool

    ---------- SR.hs ------------
    module SR where
      import {-# SOURCE #-} RSR
      data SR = MkSR RSR
      eqSR (MkSR r1) (MkSR r2) = eqRSR r1 r2

    ---------- RSR.hs ------------
    module RSR where
      import SR
      data RSR = MkRSR SR -- deriving( Eq )
      eqRSR (MkRSR s1) (MkRSR s2) = (eqSR s1 s2)
      foo x y = not (eqRSR x y)

When compiling RSR we get this code

    RSR.eqRSR :: RSR -&gt; RSR -&gt; Bool
    RSR.eqRSR = \ (ds1 :: RSR.RSR) (ds2 :: RSR.RSR) -&gt;
                case ds1 of _ { RSR.MkRSR s1 -&gt;
                case ds2 of _ { RSR.MkRSR s2 -&gt;
                SR.eqSR s1 s2 }}

    RSR.foo :: RSR -&gt; RSR -&gt; Bool
    RSR.foo = \ (x :: RSR) (y :: RSR) -&gt; not (RSR.eqRSR x y)

Now, when optimising foo:
    Inline eqRSR (small, non-rec)
    Inline eqSR  (small, non-rec)
but the result of inlining eqSR from SR is another call to eqRSR, so
everything repeats.  Neither eqSR nor eqRSR are (apparently) loop
breakers.

Solution: in the unfolding of eqSR in SR.hi, replace `eqRSR` in SR
with `noinline eqRSR`, so that eqRSR doesn't get inlined.  This means
that when GHC inlines `eqSR`, it will not also inline `eqRSR`, exactly
as would have been the case if `foo` had been defined in SR.hs (and
marked as a loop-breaker).

But how do we arrange for this to happen?  There are two ingredients:

    1. When we serialize out unfoldings to IfaceExprs (toIfaceVar),
    for every variable reference we see if we are referring to an
    'Id' that came from an hs-boot file.  If so, we add a `noinline`
    to the reference.

    2. But how do we know if a reference came from an hs-boot file
    or not?  We could record this directly in the 'IdInfo', but
    actually we deduce this by looking at the unfolding: 'Id's
    that come from boot files are given a special unfolding
    (upon typechecking) 'BootUnfolding' which say that there is
    no unfolding, and the reason is because the 'Id' came from
    a boot file.

Here is a solution that doesn't work: when compiling RSR,
add a NOINLINE pragma to every function exported by the boot-file
for RSR (if it exists).  Doing so makes the bootstrapped GHC itself
slower by 8% overall (on #9872a-d, and T1969: the reason
is that these NOINLINE'd functions now can't be profitably inlined
outside of the hs-boot loop.

-}</span><span>
</span><span id="line-720"></span></pre></body></html>